Tôi đang cố gắng viết một lớp mẫu có thể tạo thành các lớp tùy thuộc vào số <class>
Tôi vượt qua. Vấn đề là tôi không thể khai báo và xác định trong cùng một tệp .h
. Trong dự án của tôi, công cụ UTF chỉ có thể hoạt động với các tệp .cpp
(đối với phạm vi mã, v.v.). Tôi đã thấy trong một blog rằng họ nói “Thêm .cpp
thay vì .h
”. Điều này có được khuyến khích không?Các tệp .h và .cpp riêng biệt trong triển khai lớp mẫu
Template.h
#ifndef TEMPLATE_H_
#define TEMPLATE_H_
template<class T>
class Template
{
public:
T Add(T a,T b);
};
#endif /* TEMPLATE_H_ */
Template.cpp
#include "Template.h"
template<class T>
T Template<T>::Add(T a, T b)
{
return a+b;
}
Main.cpp
#include "Template.cpp" //Is this a good practise?
#include <iostream>
int main(int argc, char **argv) {
Template<int> obj;
std::cout<<obj.Add(3,4)<<std::endl;
}
Nếu đây là không nên sau đó làm thế nào để giải quyết vấn đề này? export
?
Điều này không đúng. Mặc dù nó là thuận tiện nhất để đưa định nghĩa vào mọi đơn vị dịch thuật, và do đó thực hành phổ biến, nó không phải là một yêu cầu. –
@MarkRansom Yup, bạn nói đúng. Tuy nhiên, rất hiếm khi có thể thực hiện tất cả các cảnh báo rõ ràng bắt buộc "trước". – Angew