最近在程式設計實踐中遇到乙個有關結構體前置宣告的問題,已經解決。因此記錄下來備查。
///struct stra;
class clsa
public:
private:
stra ma;
///#include 「***.h」
typedef struct tagstra
}stra;
以上為相關**的標頭檔案和原始檔。
vs語法提示表示式必須指向完整物件型別。
問題所在,標頭檔案和原始檔中對結構體型別名稱的定義不一致,有以下解決方法:
1. 標頭檔案中,先將結構體前置宣告改為struct tagstra;再將類clsa的成員ma的型別改為tagstra;
2. 也是最簡單的方式,即將標頭檔案中的結構體前置宣告改為typedef struct tagstra stra;
前置宣告的使用
本貼為 這篇文章很大程度是受到exceptional c hurb99 書中第四章 compiler firewalls and the pimpl idiom 編譯器防火牆和pimpl慣用法 的啟發,這一章講述了減少編譯時依賴的意義和一些慣用法,其實最為常用又無任何 的是使用前置宣告來取代包括標頭...
什麼時候該使用前置宣告?
首先,我們為什麼要包括標頭檔案?問題的回答很簡單,通常是我們需要獲得某個型別的定義 definition 那麼接下來的問題就是,在什麼情 況下我們才需要型別的定義,在什麼情況下我們只需要宣告就足夠了?問題的回答是當我們需要知道這個型別的大小或者需要知道它的函式簽名的時候,我們就需要獲得它的定義。假設...
11 前置宣告使用時機詳解
這篇文章很大程度是受到exceptional c hurb99 書中第四章 compiler firewalls and the pimpl idiom 編譯器防火牆和pimpl慣用法 的啟發,這一章講述了減少編譯時依賴的意義和一些慣用法,其實最為常用又無任何 的是使用前置宣告來取代包括標頭檔案。i...