当我使用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”而不必澄清它来自哪个类?
提前致谢
答案 0 :(得分:1)
您可以使用this->ceiling
。