我需要编写一个实现访问者设计模式的程序。问题是基础访问者类是一个模板类。这意味着BaseVisited :: accept()将一个模板类作为参数,并且由于它使用'this',我需要'this'指向该对象的正确运行时实例,所以它也需要是虚拟的。
我想知道是否有解决此问题的方法。需要虚拟模板成员解决方法
template <typename T>
class BaseVisitor {
public:
BaseVisitor();
T visit(BaseVisited *visited);
virtual ~BaseVisitor();
}
class BaseVisited {
BaseVisited();
template <typename T>
virtual void accept(BaseVisitor<T> *visitor) { visitor->visit(this); }; // problem
virtual ~BaseVisited();
}
这是什么问题? – 2010-05-30 18:50:37
它不会编译。 http://stackoverflow.com/questions/2354210/template-member-function-virtual – yurib 2010-05-30 18:54:24
编译器不会接受虚拟函数中的模板。 – Puppy 2010-05-30 18:54:38