template<typename T>template <typename VST>
void Vector<T>::traverse(VST& visit) {
for (int i = 0;i < _size;i++)visit(_elem[i]);
}
template <typename T> struct Increase{
virtual void operator() (T& e) { e++; }
};
template<typename T>
void Vector<T>::increase() {
(*this).traverse(Increase<T>());
}
//错误 C2664 “void Vector<int>::traverse<Increase<T>>(VST&)”: 无法将参数 1 从“Increase<T>”转换为“VST & ”
不应该这么搞吧,要么传个函数指针进去,要么传个对象进去,这个对象的一个函数成员实现你所需要的功能