[英]Forward Declaration of Template Class (Visitor Design Pattern)
我試圖轉發聲明一個模板化的類A<T>
,以供類Visitor
。 就我的目的而言,聲明類A
的int
實例A<int>
就足夠了。 我嘗試了兩種方法,但是都給出了不同的錯誤,並且我不知道如何進行。
這是我的錯誤的MWE:
namespace visitor{
class Visitor{
public:
virtual void visit(nsp::A<int>*) = 0;
};
}
namespace nsp{
template <class T>
class A{
A();
T t_attribute;
void accept(visitor::Visitor*);
};
void A<int>::accept(visitor::Visitor*){
v -> visit(this);
}
}
int main(){
return 0;
}
您可以嘗試在此處運行代碼以查看出現的錯誤:
error: specializing member 'nsp::A<int>::accept' requires 'template<>' syntax
感謝您的幫助。
我認為您在這里混合了一些東西,應該將accept方法聲明為:
template<class T>
void A<T>::accept(visitor::Visitor* v){
v -> visit(this);
}
因為A類是模板。 然后,您可以專注於任何類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.