我有以下设置:
// N is the number of rooms
template <size_t N>
class House {
void printNumberOfRooms();
}
House<1> house1;
House<2> house2;
现在我希望有一个可以容纳house1和house2的字段,我可以在其中调用house.printNumberOfRooms()。
House house;
house.printNumberOfRooms();
给我一个&#34;需要模板参数&#34;错误(显然)。
实现目标的最佳方式是什么?
答案 0 :(得分:1)
House<1>
和House<2>
是完全不同且不兼容的类型,因此您无法将它们存储在单个字段中。
但是,您可以做的是为它们提供相同的父类,并将它们存储为指向该父类的指针,并使printNumberOfRooms
为虚拟。像这样:
class BaseHouse{
virtual void printNumberOfRooms();
};
template<size_t N>
class House: public BaseHouse{
virtual void printNumberOfRooms();
};
class C{
BaseHouse * house;
};