-3
最初我有以下幾點。現在在C++結構中刪除typedef時出現編譯器錯誤
struct A: public B
{
};
typedef struct A C;
,我改變了到
typedef struct: public B
{
} C;
,我得到一個鏈接錯誤的所有功能越來越
fun(C*)
作爲參數。
我該如何解決這個問題?
最初我有以下幾點。現在在C++結構中刪除typedef時出現編譯器錯誤
struct A: public B
{
};
typedef struct A C;
,我改變了到
typedef struct: public B
{
} C;
,我得到一個鏈接錯誤的所有功能越來越
fun(C*)
作爲參數。
我該如何解決這個問題?
我不完全確定,但有一些想法:你不能轉發declare typedefs,所以如果有人前轉聲明A
可能會導致問題(即使它似乎不相關)。
我懷疑真正的問題是因爲你是結構而不是命名它。幾乎可以肯定的是,這導致編譯器給它不同的鏈接(例如,它在每個文件中獲得不同的裝飾名稱),並且找不到適當的函數。
最後,由於您使用的是繼承,因此您必須使用C++,因此您根本不應該使用typedef
作爲您的struct
。
問題是我鍵入的結構沒有在C++中命名。謝謝 – sramij
爲什麼不簡單地說'struct C:public B {};'?另外在C++中,結構不在單獨的命名空間中。 – user786653
刪除了C標籤。涉及繼承。因此,這個問題與C無關C –
你會得到什麼鏈接器錯誤? – jirkamat