Có lời khuyên chung hoặc cách giải quyết để tổ chức hoặc phân phối lại định nghĩa thành viên templated trên nhiều tập tin?
Có; không.
Thông số C++ cho phép trình biên dịch có thể "xem" toàn bộ mẫu (tuyên bố và định nghĩa) tại thời điểm khởi tạo và (do sự phức tạp của bất kỳ triển khai nào) hầu hết các trình biên dịch đều giữ yêu cầu này. Kết quả là #inclusion của bất kỳ tiêu đề mẫu nào cũng phải #include bất kỳ và tất cả nguồn cần thiết để tạo mẫu.
Cách dễ nhất để giải quyết vấn đề này là đổ tất cả mọi thứ vào tiêu đề, nội tuyến nơi có thể đặt, ngoài lề khi cần thiết.
Nếu bạn thực sự coi đây là một vấn đề không thể chấp nhận được, một tùy chọn chung là chia mẫu thành cặp tiêu đề/triển khai thông thường, sau đó #bao gồm tệp triển khai ở cuối tiêu đề.
Tính năng "xuất" của C++ có thể hoặc không thể cung cấp cách giải quyết khác. Tính năng này được hỗ trợ kém và được xác định kém; mặc dù nó về nguyên tắc nên cho phép một số loại biên dịch riêng biệt của các mẫu, nó không nhất thiết phải obviate nhu cầu mà trình biên dịch có thể nhìn thấy toàn bộ cơ thể mẫu.
+1 cho liên kết để liên kết bài viết –
bài báo là lỗi thời! – iamantony