Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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++_Templates_Derived Class_Derived - Fatal编程技术网

C++ 派生专用模板类

C++ 派生专用模板类,c++,templates,derived-class,derived,C++,Templates,Derived Class,Derived,我对模板类的派生有问题。 以下代码片段将显示我的问题: class object { } template <class T> class container { public: cotainer(void) { // do some work } } template <class in, class out> class stage { private: container<in> *input; con

我对模板类的派生有问题。 以下代码片段将显示我的问题:

class object {
}

template <class T>
class container {
public:
    cotainer(void) {
        // do some work
    }
}

template <class in, class out>
class stage {
private:
    container<in> *input;
    container<out> *output;
public:
    stage(bool input, container<out> *output) {
        // do some other work
    }
}
类对象{
}
模板
类容器{
公众:
科塔纳(无效){
//做些工作
}
}
模板
班级阶段{
私人:
容器*输入;
容器*输出;
公众:
阶段(布尔输入、容器*输出){
//做一些其他的工作
}
}
在那之后,我想从舞台上演绎。 如果派生类也是一个模板类(如:

template <class T>
class derived : public stage<T, T> {
public:
    derived(container<T> *output) : stage<T, T>(false, output) {}
}
模板
派生类:公共舞台{
公众:
派生(容器*输出):阶段(false,输出){
}
但是,如果派生类是stage的一个特殊化,我会得到一个错误

class derived : public stage<object, object> {
public:
    derived(container<object> *output) : stage<object, object>(false, output) {}
}
派生类:公共阶段{
公众:
派生(容器*输出):阶段(false,输出){
}
错误是,编译器没有找到stage的构造函数

undefined reference to `stage<object, object>::stage(bool, container<object>*)'
stage::stage(bool,container*)的未定义引用

如何解决此问题?

这肯定不是您的代码(缺少分号、键入错误等),请您提供一个示例,可以编译到出现(链接器)错误的地方吗?在一个文件中为我编译(修复键入错误后)。我怀疑问题与您如何在头文件和源文件之间分发代码有关。同意@us2012,您很可能在
.cpp
文件中定义了类模板的成员函数(包括链接器似乎抱怨的构造函数)。如果是这种情况,请参阅并将这些成员函数定义移动到定义相应类模板的标题中。好的,谢谢。这对我来说很管用,但看起来又脏又笨。这是一个通用的编译器问题还是GCC的问题?@user好吧,请参阅Andy Prowl链接中投票数第二高的问题答案-您可以在定义模板的文件中显式实例化模板。但我不相信这是“清洁”的一般。