[英]Proper Declaration of Classes Inherited from Template Class
我對如何正確聲明從模板類繼承的類感到困惑。
基類看起來像這樣(不包括不相關的位):
template <class Writer>
class Node
{
Writer* writer;
...
public:
Node (std::string& root);
...
}
聲明和構造此類的繼承類的正確方法是什么? 我想的是:
template <class Writer>
class IndexNode : public Node
{...}
但是,這樣做會給我“ expected class-name before '{' token
”。 我已經嘗試在繼承的類中注釋掉模板聲明,認為模板聲明本身可能是從父類繼承的,但這也沒有幫助,也嘗試過
class IndexNode : template <class Writer> public Node
{...}
,思考可能必須將模板顯式附加到基類。 我想而不是繼續采取正確的組合,我會尋求幫助,並希望了解一些能讓我理解其原因的東西。
謝謝!
您的派生類也是模板嗎?
template <class Writer>
class IndexNode : public Node<Writer>
{
//...
}
class IndexNode : public Node<SomeClassThatSpecializezNode>
{
//...
}
您將需要實例化正確的基類類型。
template<class Writer>
class IndexNode: public Node<Writer>
{
};
那取決於。 如果您繼承的類使用了SpecificWriter類,那么您可以這樣做
class IndexNode : public Node<SpecificWriter>
{
};
如果otoh你的繼承類也應該被模板化了
template <typename Writer>
class IndexNode : public Node<Writer>
{
};
寫
template<class Writer>
class IndexNode : public Node<Writer>
如果Writer
應該是IndexNode的模板參數。
寫
class IndexNode : public Node<Writer>
如果Writer
是一個已知的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.