1
我很新的C++和我試圖從他的孩子,其實是一個模板類調用父虛擬方法。我得到以下錯誤:調用模板類的父方法
dependent-name 'bList<T>::bNode' is parsed as a non-type, but instantiation yields a type
我已經審查了其他帖子,並嘗試了不同的組合,但沒有設法解決它。
template <class T>
class bList {
protected:
class bNode
{
// PARENT METHOD:
public:
virtual void chain() {
// do something...
}
};
protected:
virtual bNode* makeNode(T& data) {
return new bNode();
}
};
template <class T>
class cList : public bList<T> {
protected:
class cNode : public virtual bList<T>::bNode {
// CHILD METHOD:
public:
virtual typename bList<T>::bNode* chain(typename bList<T>::bNode* node) {
// if (...) {
// return ...
// }
// else {
return bList<T>::bNode.chain(node); // <- error!
// }
}
};
protected:
virtual typename bList<T>::bNode* makeNode(T& data) {
return new cNode();
}
};
你的意思是'bList :: bNode :: chain(node)'? –
Barry
對不起,我在嘗試簡化代碼以便發佈時犯了一個錯誤。原本簽名是好的。使用'this-> bList :: bNode :: chain(node);'解決了這個問題,謝謝。 –
trrcore