Tôi gặp vấn đề tôi thực sự không hiểu. Tôi có một nút Node.lớp C++ với mẫu không thể tìm thấy hàm tạo của nó
template<class T>
class node {
protected:
T _data;
public:
node(T data);
};
Đây là tệp "node.h". Trong tập tin "node.cpp", có constructor này:
#include "node.h"
template<class T>
node<T>::node (T data) {
_data = data;
}
Trong khi trình biên dịch thấy không có lỗi, mối liên kết (ld) nói với tôi:
/usr/bin/ld: những biểu tượng không xác định:
nút <int> :: node (int)
phần lạ ... nếu tôi di chuyển hàm tạo từ tệp .cpp đến .h, mọi thứ đều hoạt động tốt. Vấn đề ở đâu?
Bạn cũng có thể đặt các chức năng thành viên templatized của một lớp không templatized vào file cpp nếu bạn không bao giờ gọi cho họ ở nơi khác (để thực thi điều này, họ nên riêng tư, nhưng chúng không nhất thiết phải). – rmeador