0

テンプレート クラスの派生に問題があります。次のコード スニペットは、私の問題を示しています。

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) {}
}

しかし、派生クラスがステージの特殊化である場合、エラーが発生します。

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

エラーは、コンパイラがステージのコンストラクターを見つけられないことです。

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

どうすれば問題を解決できますか?

4

0 に答える 0