我需要編寫一個實現訪問者設計模式的程序。問題是基礎訪問者類是一個模板類。這意味着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