noob tại đây vẫn đang thử nghiệm với các mẫu. Đang cố gắng viết mẫu lớp xử lý tin nhắnLớp mẫu bên trong mẫu lớp trong C++
template <typename T> class MessageProcessor {
//constructor, destructor defined
//Code using t_ and other functions
foo(void) {
//More code in a perfectly fine method
}
private: T *t_
};
Tất cả được xác định trong tệp tiêu đề. Tôi đã xây dựng và kiểm tra lớp học của mình và tất cả đều tốt. Bây giờ, tôi đang cố gắng thực hiện điều này:
template <typename T> class MessageProcesor {
//Same stuff as before
foo(void) {
//Same code as before in foo, but one new line:
t_->getMessageSender<MessageType>();
}
private: T *t_;
};
Tuy nhiên, dòng này cung cấp cho tôi lỗi của biểu thức xấu trước khi ký hiệu '>'.
Tôi đã thêm các tệp tiêu đề cần thiết để xác định loại MessageType. Tôi đã sử dụng chức năng này nhiều lần trước đây, không phải trong ngữ cảnh này.
Tôi nghi ngờ rằng trình biên dịch không thích thực tế là hàm mẫu được định nghĩa đầy đủ (chuyên biệt?) Trong một mẫu lớp không xác định (không chuyên biệt?). Tôi không hoàn toàn grokking những gì làm cho một mẫu 'chuyên'. Hầu hết các giải thích tập trung vào các khái niệm 'đầy đủ' hoặc 'một phần', nhưng không phải là những gì làm cho nó trở nên chuyên biệt ngay từ đầu.
Xin lỗi nếu bạn muốn xem thêm mã. Tôi không có truy cập internet tại nơi làm việc và đó là nơi tôi đang làm điều này, vì vậy tôi phải đặt tất cả mọi thứ vào tinh thần của tôi 'scratchpad' và mang nó về nhà.
Đăng mã chức năng getMessageSender tại đây. –
thực phẩm không có loại trả lại, đó là vấn đề của bạn –
Bạn hoàn toàn chính xác trong các quan sát của mình. Tuy nhiên, đó là lỗi chính tả. Vấn đề thực tế là thiếu từ khóa 'mẫu' như được trả lời bởi Faisal – user106740