以下代码无法使用gcc进行编译,但是可以使用Visual Studio进行编译:
template <typename T> class A {
public:
T foo;
};
template <typename T> class B: public A <T> {
public:
void bar() { cout << foo << endl; }
};
我得到了错误:
test.cpp:在成员函数'void B :: bar()'中:
test.cpp:11:错误:未在此范围内声明'foo'
但是应该!如果我更改bar为
void bar() { cout << this->foo << endl; }
那么它确实可以编译,但是我认为我不必这样做。GCC遵循的C ++正式规范中是否有某些内容,还是只是一个怪癖?
摇曳的蔷薇
ITMISS
相关分类