我有以下代码:
class A{};
class B: public A{};
class C: public A{};
class MyVisitor
{
public:
void visit(B*);
void visit(C*);
};
然后收集 A* 对象,我想实现以下目标:
1)
MyVisitor visitor;
for(vector<A*>::iterator it = vec.begin(); it!= vec.end();it++)
visitor->visit(a);
2)在编译时以某种方式确定,如果 A* 指向派生对象 D,并给出编译器错误,如果MyVisitor::visit(D*)
函数不存在
我知道 1) 可以通过一些多方法实现来实现,我想我可以找到一些用于 c++ 的多方法实现。但是2)有可能吗?