16

わかりましたみんな...私は次のクラスを持っています

#include <functional>

template <typename TValue, typename TPred = std::less<TValue>>
class BinarySearchTree {
    struct TNode {
        TValue value;
        TNode *pLeft;
        TNode *pRight;
    };
public:
    BinarySearchTree();
    ~BinarySearchTree();

    . . .
private:
    TNode *pRoot;

     . . .
};

次に、.cpp ファイルで ctor/dtor を次のように定義しました。

template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::BinarySearchTree() : pRoot(0) {}

template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::~BinarySearchTree() {
    Flush(pRoot);
}

私の主な機能:

int main() {    
    BinarySearchTree<int> obj1;
    return 0;
}

そして、次のリンケージエラーが発生します:

public: __thiscall BinarySearchTree<int,struct std::less<int>>::BinarySearchTree<int,struct std::less<int> >(void)

コンストラクター定義をヘッダー ファイルに入れようとしましたが、エラーは発生しません。cppファイルで定義しようとした場合のみ。

4

2 に答える 2

0

最後にスペースを空けて試してください。左シフト演算子と見なされる可能性があります。

template <typename TValue, typename TPred = std::less<TValue> >
于 2013-06-03T18:58:35.127 に答える