这段代码有什么问题? gcc 4.6.1 在 baz() 中提示“'foo' 未在此范围内声明”。如果我转换代码以使其中一个模板只是一个常规类,问题就会消失。
struct Foo {
char foo;
};
template<int N>
struct Bar : public Foo
{
Bar() { foo; }
};
template<int N>
struct Baz : public Bar<N>
{
void baz() { foo; }
};
int main() {
Baz<10> f;
return 0;
}
最佳答案
有什么问题,根据规范,我不知道,但您可以使用以下代码编译代码:
void baz() { Bar<N>::foo; }
关于C++类模板继承之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958258/