这段代码有什么问题? gcc 4.6.1抱怨“'foo'没有在此范围内声明”in baz()。如果我转换代码以使其中一个模板只是一个普通类,问题就会消失。C++类模板继承难题
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;
}
我不明白你在做什么 - Bar(){foo;}什么是foo? – badmaash
这被称为从属名称。请参阅http://womble.decadent.org.uk/c++/template-faq.html#base-lookup – Suma
可能的重复[为什么不这C++模板代码编译?](http://stackoverflow.com/questions/1364837/why-doesnt-this-c-template-code-compile) – Suma