我剛剛瞭解了typedef。假設我有一個實例:typedef在方法的參數
private:
typedef std::string int doubles abc;
當我做一個訪問器實例ABC:
returnType get(){...}
什麼,我應該把在返回類型?它是abc還是數據類型? thx
我剛剛瞭解了typedef。假設我有一個實例:typedef在方法的參數
private:
typedef std::string int doubles abc;
當我做一個訪問器實例ABC:
returnType get(){...}
什麼,我應該把在返回類型?它是abc還是數據類型? thx
我不確定你想在這裏做什麼。你的typedef
是無效的語法,「雙打」不是C++類型(但可能只是一個錯字)。爲有效語法的例子是:
typedef std::string abc;
typedef int foo;
...
然後,您可以使用typedef
在功能上簽名,就像其他類型:
abc getValue();
雖然你應該把typedef
在類的,如果public
部分你想在公共成員函數中使用它。而且你應該知道,班級以外的代碼將始終必須在typedef
前加上班級名稱,除非再次爲typedef
'd。
class SomeClass {
public:
typedef std::string foo;
};
// Somewhere outside SomeClass
SomeClass::foo bar = ...
typedef SomeClass::foo localFoo;
localFoo fooBar = ...;
除此之外:typedef
不提供任何方式具有可變代表一個以上的類型。 C++是一種靜態類型語言,因此這不是直接可能的。然而,你可以:
union
和一些鑑別儲存什麼鍵入它正在存儲void*
和鑄造 - 不推薦!boost::variant
,boost::any
等喜歡被別人建議編輯:最後,您使用「實例」一詞的:它是usally用來指一個類的實例,即屬於一個類的特定對象。你的意思是一個「成員變量」。
明白了。 thx男子:D – user1988385
順便說一句,如果我有這樣的事情「typedef std :: string a []」,我應該在「returnType」上放什麼?它是[]嗎? – user1988385
使用'std :: vector
'typedef std :: string int doubles abc;'什麼? – chris
你寫的是不正確的。 'typedef's只能有'typedef T1 T2'的形式,其中'T2'成爲'T1'的別名。 –
跟我來。你會的。在一個世界上。純粹的想象... – Rubens