基本上这就是我想要做的:类似于使用枚举的声明?
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