gcc - 继承和模板 - 变量X未在此范围内声明

时间:2013-10-25 07:59:13

标签: c++ gcc

我一直试图将Windows上的东西移植到linux上。以下示例在VS2010中编译得很好,并且在使用main.cpp:17:31: error: ‘data’ was not declared in this scopeg++ (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);}

0 个答案:

没有答案