2011-08-16 63 views
-3

最初我有以下幾點。現在在C++結構中刪除typedef時出現編譯器錯誤

struct A: public B 
{     
}; 

typedef struct A C; 

,我改變了到

typedef struct: public B 
{     
} C; 

,我得到一個鏈接錯誤的所有功能越來越

fun(C*) 

作爲參數。

我該如何解決這個問題?

+3

爲什麼不簡單地說'struct C:public B {};'?另外在C++中,結構不在單獨的命名空間中。 – user786653

+4

刪除了C標籤。涉及繼承。因此,這個問題與C無關C –

+1

你會得到什麼鏈接器錯誤? – jirkamat

回答

0

我不完全確定,但有一些想法:你不能轉發declare typedefs,所以如果有人前轉聲明A可能會導致問題(即使它似乎不相關)。

我懷疑真正的問題是因爲你是結構而不是命名它。幾乎可以肯定的是,這導致編譯器給它不同的鏈接(例如,它在每個文件中獲得不同的裝飾名稱),並且找不到適當的函數。

最後,由於您使用的是繼承,因此您必須使用C++,因此您根本不應該使用typedef作爲您的struct

+0

問題是我鍵入的結構沒有在C++中命名。謝謝 – sramij