0

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

0 回答 0