【发布时间】:2010-12-06 18:23:51
【问题描述】:
当一个模板从另一个模板公开继承时,基本的公共方法不应该是可访问的吗?
template <int a>
class Test {
public:
Test() {}
int MyMethod1() { return a; }
};
template <int b>
class Another : public Test<b>
{
public:
Another() {}
void MyMethod2() {
MyMethod1();
}
};
int main()
{
Another<5> a;
a.MyMethod1();
a.MyMethod2();
}
好吧,GCC 在这方面废话了……我一定遗漏了一些完全明显的东西(大脑融化)。帮忙?
【问题讨论】:
-
您在第二类定义后遗漏了一个分号。
-
您缺少一个 ;在
class Another的末尾。如果你解决了这个问题,那么它在 VS2008 中可以正常编译 -
@Naveen:VC 接受这是因为它没有实现正确的两阶段查找。
-
@OldCoder:请尝试发布仅包含您感兴趣的问题的代码。否则您会得到很多答案,指出许多(其他)问题。
-
@OldCoder:当您询问有关错误的问题时,您应该发布错误消息。
标签: c++ inheritance templates