Nếu tôi có một đặc điểm kỹ thuật lớp mẫu như vậy,Làm cách nào để tránh trùng lặp đặc tả mẫu lớp cho từng chức năng của thành viên?
template <typename T>
class MyClass {
public:
void fun1();
// ...
void funN();
};
template <typename T>
void MyClass<T>::fun1() {
// definition
}
// ...
template <typename T>
void MyClass<T>::funN() {
// definition
}
Nếu tôi thay đổi mẫu lớp để cái gì khác, nói rằng tôi thêm một tham số phụ:
template <typename T, typename U>
class MyClass {
// ...
};
Sau đó, tôi phải thay đổi mỗi chức năng định nghĩa (fun1, ..., funN) để đồng ý với đặc tả mẫu lớp học:
template <typename T, typename U>
void MyClass<T,U>::fun1() { //... }
Có chiến lược nào để tránh điều này không? Tôi có thể sử dụng macro hay không
#define DFLT_TEMPLATE template<typename T, typename U>
#define DFLT_CLASS class<T,U>
DFLT_TEMPLATE
void DFLT_CLASS::fun1() { // ... }
Hoặc đây có phải là hành vi không tốt?
Không quan tâm về những gì người khác nói. Nếu bạn thực sự ghét ** viết lại nhiều thứ (như tôi) - thì chỉ cần sử dụng macro. Tôi nhận thức được tất cả những hạn chế và cạm bẫy của việc sử dụng macro. Tuy nhiên, tôi vẫn thích macro sao chép + dán và v.v. – valdo
P.S. Từ kinh nghiệm cá nhân của tôi viết lại những thứ, ngoài việc mất tinh thần, nguy hiểm hơn nhiều so với sử dụng macro – valdo
'Tìm & Thay thế 'giúp đây – Inverse