Ok guys ... Tôi đã sau lớpTemplate lớp constructor
#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;
. . .
};
sau đó trong tập tin cpp của tôi định nghĩa ctor/dtor như thế này:
template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::BinarySearchTree() : pRoot(0) {}
template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::~BinarySearchTree() {
Flush(pRoot);
}
chức năng chính của tôi:
int main() {
BinarySearchTree<int> obj1;
return 0;
}
và tôi nhận được lỗi liên kết sau:
public: __thiscall BinarySearchTree<int,struct std::less<int>>::BinarySearchTree<int,struct std::less<int> >(void)
tôi đã cố gắng đặt định nghĩa hàm tạo vào tệp tiêu đề và tôi không nhận được lỗi. chỉ khi tôi cố gắng xác định nó trong tệp cpp.
Câu trả lời cho câu hỏi của bạn là [ở đây] (http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file) - xin lỗi, liên kết sai trong phiếu bầu gần nhất –