2012-09-11 93 views
0

我有這樣的構造一段cpp的頭文件:typedef類別:未知類型名稱'MyType';你的意思是'MyType_t'?

typedef class MyType_t { 

//... 

public: 
    void method(); 

} MyType; 

我試圖從.mm文件中像這樣使用它:

MyType.method(); 

,這會導致編譯器錯誤「未知鍵入名稱'MyType';你的意思是'MyType_t'?「

編譯器似乎能夠理解「MyType_t」,但似乎不支持「MyType」。我只知道非常基本的C++,並不確切知道這個構造的用途。我剛剛下載了這個代碼,必須從objective-c中調用它。

+0

你想要MyType是什麼,一個變量或類型的名稱?一方面你上面的是一個類型的名字,你給它的名字'MyType'表明你希望它是一個類型的名字。但是你使用它就像是一個變量'MyType.method();'。所以除非你說出你正在做的事情,否則不能真正回答這個問題。 – john

+0

我試圖運行在目標c ^中從互聯網下載的工作代碼。^我不明白爲什麼作者使用typedef MyType_t和MyType。至少從現實的角度來看,這個問題現在得到了回答。 – Ixx

+0

那麼如果我不得不猜測,我會說刪除單詞typedef,但我認爲你和我都猜測。看到更多的代碼可能會有所幫助。當你a)你不明白它,b)它不能編譯時,你信任互聯網上的代碼嗎?無論你想要做什麼,似乎都是不穩固的基礎。 – john

回答

0

的問題是,使用MyType

那麼增加這個

MyType MyType_t(parameter); 

解決它之前,我並沒有調用構造函數。

+0

我只是說,使用一個名稱不同於類標籤的typedef是毫無意義的,並且會造成混淆。 – gnasher729

5

都不應該工作。

您是不是要找:

class MyType_t { 

//... 

public: 
    void method(); 

} MyType; 

typedef聲明瞭一個新的類型,稱爲MyType相同MyType_t。上面的語法聲明MyType_t類型的變量MyType

+0

該類沒有構造函數。刪除'typedef'會導致頭文件中現在編譯器錯誤:沒有匹配的構造函數來初始化'class MyType_t'。我知道添加構造函數可能會有所幫助,但是此代碼的作者似乎有一些不同的想法...... – Ixx

+0

@Ixx一個類不能沒有構造函數。編譯器在沒有用戶定義的構造函數的情況下生成默認的一個。 –

+0

好的。順便說一句,甚至有一個建設者...今天失明。但是,爲什麼我得到編譯器錯誤? – Ixx