Windows上の何かをLinuxに移植しようとしています。次の例は、VS2010 では正常にコンパイルされ、g++ ではmain.cpp:17:31: error: ‘data’ was not declared in this scope
( g++ (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)
) で失敗します。大量のキャストなしで基本クラスにアクセスするための回避策はありますか? これは標準でもサポートされていますか?
#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);}