基本上這就是我想要做的:類似於使用枚舉的聲明?
struct A {
enum E {
X, Y, Z
};
};
template <class T>
struct B {
using T::E;
};
// basically "import" the A::E enum into B.
std::cout << B<A>::X << std::endl;
之所以是,我想基本上注入的實施細則到我的模板類。同時,「模型」的枚舉反映了我希望用戶能夠爲模板的特定實例化所獲得的信息。這可能嗎?
我知道我可以從A
繼承B
,但我認爲這不是一個理想的解決方案,因爲我希望能夠在不更改B
的膽量的情況下添加新的「模型」。
編輯:現在我已經儘管了,繼承不一定需要排除。或許下面是理想的:
struct A {
enum E {
X, Y, Z
};
};
template <class T>
struct B : A {
};
int main() {
std::cout << B<A>::X << std::endl;
}
無論如何,在該'cout'語句中擺脫那個中間':: E'? – 2010-10-21 02:16:54
它似乎並沒有與海灣合作委員會4.5.1的工作:'錯誤:'B :: E'不是一個類或命名空間' – 2010-10-21 02:18:22
@Evan - :-)會讓你知道,我想象如此...見編輯版本(最後一行)。我在Visual C++ v10 – 2010-10-21 02:18:34