Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;包含具有不同模板参数的对象的字段_C++_Templates - Fatal编程技术网

C++ C++;包含具有不同模板参数的对象的字段

C++ C++;包含具有不同模板参数的对象的字段,c++,templates,C++,Templates,我有以下设置: // N is the number of rooms template <size_t N> class House { void printNumberOfRooms(); } House<1> house1; House<2> house2; 给了我一个“requires template argument”错误(显然) 实现我的目标的最佳方法是什么?House和House是完全不同且不兼容的类型,因此不能将它们存储在单个字

我有以下设置:

// N is the number of rooms
template <size_t N>
class House {
    void printNumberOfRooms();
}


House<1> house1;
House<2> house2;
给了我一个“requires template argument”错误(显然)

实现我的目标的最佳方法是什么?

House
House
是完全不同且不兼容的类型,因此不能将它们存储在单个字段中

但是,您可以为它们提供相同的父类,并将它们存储为指向该父类的指针,并使
printNumberOfRooms
虚拟。像这样:

class BaseHouse{
virtual void printNumberOfRooms();
};
template<size_t N>
class House: public BaseHouse{
virtual void printNumberOfRooms();
};
class C{
BaseHouse * house;
};
class基地{
虚拟void printNumberOfRooms();
};
模板
班级宿舍:公共基地{
虚拟void printNumberOfRooms();
};
C类{
基地*大楼;
};

您没有给我们提供足够的信息来决定什么是最好的。除非你能明确说明你想在这个领域做什么,否则你只是要求别人给你写一篇文章。我想在house1或house2上打印NumberOfRooms()。可能是
class BaseHouse{
virtual void printNumberOfRooms();
};
template<size_t N>
class House: public BaseHouse{
virtual void printNumberOfRooms();
};
class C{
BaseHouse * house;
};