C ++,从派生模板类中查看基本模板类中的对象

时间:2015-01-19 08:56:58

标签: c++ templates

当我使用GCC 4.8.3编译以下模板化C ++代码时

template <typename dtype> class Base {
public:
    dtype base;
    dtype ceiling;
    Base() { };
    virtual ~Base() { };
};

template<typename dtype> class Building : public Base<dtype> {
public:
    dtype wall;
    Building(dtype concrete) { 
        Base<dtype>::base=concrete;
        ceiling=concrete; 
        wall=concrete;
    };

    ~Building() { };
};

int main (int argc, char* argv[]) {

    Building<float>* building=new Building<float>(2.0);

    std::cout << building->base << std::endl;
}

我收到错误

error: ‘ceiling’ was not declared in this scope
ceiling=concrete; 

所以看来

Base<dtype>::base=concrete;

有效,但

ceiling=concrete;

没有。有没有什么方法可以使这个模板化的代码变得模糊,以便在派生类构造函数中我可以从模板化的基类中引用“ceiling”而不必澄清它来自哪个类?

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以使用this->ceiling