我正在尝试转发声明一个模板化的类A<T>
,以便在类Visitor
中使用。我的目的就是声明类int
的{{1}}实例A<int>
就足够了。我尝试了两种方法,但都有不同的错误,我不知道如何继续。
这是我的错误的MWE:
A
您可以尝试运行代码here以查看我收到的错误:
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;
}
我感谢任何帮助。
答案 0 :(得分:0)
我认为你在这里混合了一些东西,你应该将accept方法声明为:
template<class T>
void A<T>::accept(visitor::Visitor* v){
v -> visit(this);
}
因为A类是模板。然后你可以专注于任何类型。