template <class T>
class baseclass{
protected:
T data;
public:
baseclass(){};
void setData(T d);
};
template<class T>
void baseclass<T>::setT(T d){
data = d;
}
Được hiển thị ở trên là lớp cơ sở của tôi, một biến thành viên được bảo vệ, một trình thiết lập.Vấn đề thừa kế mẫu đơn giản C++
template <class T>
class aclass : public baseclass<T>
{
public:
aclass(T d);
};
template<class T>
aclass<T>::aclass(T d){
setData(d); <---WORKS
data = d; <---DOESN'T WORK
}
Đây là lớp con đầu tiên của tôi. Đối với một số lý do, truy cập vào biến thành viên được bảo vệ trực tiếp là không làm việc mặc dù tôi tin rằng nó nên. Tuy nhiên, truy cập vào setter hoạt động tốt. Tôi là một noob với C + +, tôi chắc rằng tôi đang thiếu một cái gì đó hiển nhiên.
Tính năng này có hoạt động nếu bạn viết dữ liệu này-> data = d ;? –
Bạn có thể vui lòng cụ thể hơn về ý nghĩa của nó "không hoạt động" không? Bạn đang nhận được một lỗi biên dịch (và nếu như vậy, cái nào), hoặc nó không có gì trong thời gian chạy hoặc những gì? –
@Michael có, nó có. một cách tự nhiên. – jakev