<分区>
当我使用 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”,而不必澄清它来自哪个类?
提前致谢