Tôi nhận thấy các câu hỏi tương tự đã được hỏi trước đây, nhưng tôi đã đọc một vài câu hỏi và vẫn không thấy tôi đang đi sai. Khi tôi chỉ đơn giản là viết lớp của tôi mà không tách nguyên mẫu khỏi định nghĩa, mọi thứ đều hoạt động tốt. Vấn đề xảy ra khi tôi tách các nguyên mẫu và định nghĩa như hình dưới đây:"được sử dụng không có thông số mẫu"
template<class T> class VisitedSet {
public:
VisitedSet();
int getSize();
void addSolution(const T& soln);
void evaluate();
private:
vector<T> vec;
int iteration;
};
Và như một ví dụ về một định nghĩa mà mang lại cho tôi lỗi này:
int VisitedSet::getSize() {
return vec.size();
Tôi chưa bao giờ làm một lớp templated trước , vì vậy xin vui lòng tha thứ cho tôi nếu vấn đề ở đây là tầm thường.
Lưu ý: Trong hầu hết các trường hợp, bạn muốn định nghĩa các chức năng thành viên mẫu có thể truy cập được trong tiêu đề. Nếu các định nghĩa nằm trong tiêu đề, hãy nhớ đánh dấu chúng là 'inline' (hoặc định nghĩa chúng bên trong định nghĩa lớp mẫu), nếu chúng không, suy nghĩ hai lần và chắc chắn rằng bạn không cần định nghĩa trong phần đầu (bạn làm không cần định nghĩa trong tiêu đề nếu bạn khởi tạo rõ ràng trong đơn vị dịch có chứa định nghĩa cho * tất cả * loại mà bạn muốn sử dụng mẫu). Tôi sợ rằng bạn sẽ nhận được một chút bởi điều này khá sớm ... –