Tôi đã vượt qua một vấn đề, tôi nghĩ một điều rất cụ thể.các phương pháp ảo và các lớp mẫu
Tôi đã có 2 lớp, một B aseclass và D lớp erived (từ B aseclass). B là một mẫu lớp (hoặc lớp mẫu) và có một tinh khiết phương pháp ảovirtual void work(const T &dummy) = 0;
Các D lớp erived là nghĩa vụ phải reimplement này, nhưng như D được Xuất phát từ B hơn D là một lớp mẫu khác, trình biên dịch khạc nhổ tôi rằng các hàm và mẫu ảo không hoạt động cùng một lúc.
Bất kỳ ý tưởng nào về cách thực hiện những gì tôi muốn?
Tôi thankfull cho bất kỳ suy nghĩ và ý tưởng, đặc biệt là nếu bạn allready làm việc ra rằng vấn đề
lớp này là cố định hay còn gọi là AS IS, tôi không thể chỉnh sửa này mà không phá vỡ cơ sở mã hiện
template <typename T>
class B {
public:
...
virtual void work(const T &dummy) = 0;
..
};
mất int * là một ví dụ
class D : public B<int*>{
...
virtual void work(const int* &dummy){ /* put work code here */ }
..
};
Edit: Trình biên dịch nói với tôi, rằng void B<T>::work(const T&)
[with T = int*]
là p ure ảo trong phạm vi D
Đọc tại sao lý do vẫn không hoạt động đối với tôi (như đã thử với các lớp Qt), thiếu sót thiết kế Qt ... http://lists.trolltech.com/qt-interest/2006 -02/thread00693-0.html – drahnr
và xem tại đây http://doc.trolltech.com/qq/qq15-academic.html cuối cùng tôi phải sử dụng khoảng trống cũ * thay vì mẫu ... – drahnr