我一直试图将Windows上的东西移植到linux上。以下示例在VS2010中编译得很好,并且在使用main.cpp:17:31: error: ‘data’ was not declared in this scope
(g++ (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)
)的g ++中失败。是否有一些解决方法来访问基类没有一吨铸造?这甚至是标准支持吗?
#include <stdio.h>
class A {
public:
int data;
A() {data = 42;}
};
template<typename T>
class B : public A {
};
template<typename T>
class C : public B<T> {
public:
void print() {printf("%i\n", data);}
};
int main()
{
C<char> c;
c.print();
return 0;
}
[修改] 以下更改在gcc中编译正常。
void print() {printf("%i\n", this->data);}