派生专门的模板类

时间:2013-03-18 12:00:19

标签: 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;
    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) {}
}

但是,如果派生类是stage的特化,我会收到错误。

class derived : public stage<object, object> {
public:
    derived(container<object> *output) : stage<object, object>(false, output) {}
}

错误是,编译器找不到stage的构造函数。

undefined reference to `stage<object, object>::stage(bool, container<object>*)'

我该如何解决这个问题?

0 个答案:

没有答案