讓我們用C++一個簡單的類開始:的typedef具體構造函數參數的一類
class aClass {
bool b;
aClass(bool x){b=x;}
};
是否有可能的typedef 2種新型stateTrue和stateFalse這樣,如果我做的:
stateTrue variable;
它會翻譯爲:
aClass variable(true);
?
讓我們用C++一個簡單的類開始:的typedef具體構造函數參數的一類
class aClass {
bool b;
aClass(bool x){b=x;}
};
是否有可能的typedef 2種新型stateTrue和stateFalse這樣,如果我做的:
stateTrue variable;
它會翻譯爲:
aClass variable(true);
?
繼承的另一種可能是使aClass
一個template
:
template <bool T>
class aClass
{
public:
bool b;
aClass(): b(T) {}
};
typedef aClass<true> stateTrue;
typedef aClass<false> stateFalse;
確實。儘管現在有'b'成員變量沒有什麼好處! – 2012-03-15 12:02:29
@OliCharlesworth,同意...... – hmjd 2012-03-15 12:14:19
不,因爲這是一個實例,而不是一個類型。
你可以推導出:
class stateTrue: public aClass {
public:
stateTrue() : aClass(true) {}
};
這是有效的,我沒有更好的答案,但是我個人並不關心它......在我的使用案例中,它看起來很醜。 – BuvinJ 2015-08-19 16:23:12
最接近的將是
class stateTrue : // new type needed, not just a new name
public aClass { // but obviously can be converted to aClass
public: stateTrue() : aClass(true) { } // Default ctor sets aClass base to true
};
一個'typedef'引入了現有類型的別名。如果你想要基於'aClass'的新類型,你需要的不僅僅是'typedef'。 – 2012-03-15 11:53:11
您正試圖將編譯時結構(類型)與運行時值(成員'b'的值)混合使用。你真的需要解決什麼問題?通過了解問題而不是解決預期解決方案的問題,您可能會得到更好的答案。 – 2012-03-15 12:10:53
那麼,我正在編寫一個解決特定方程的程序。該課程將代表「上」或「下」狀態。 typedef部分用於在需要特定狀態時更易於讀取代碼。 – UldisK 2012-03-15 12:48:11