我一直在尝试将 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);}