我有一个Child
扩展类Base
。在我的课堂Foo
上,我有带有签名的方法,例如:
void Foo::doStuff(Base *& base); // case A
void Foo::doOther(Child *& child); // case B
void Foo::doSomething(Base * base); // case C
我对案例 B没有任何问题。如果我写:
Child * myChild = new Child();
Foo foo;
foo.doOther(myChild);
没有编译/运行时错误。
问题出在案例 A上,如果我写:
Child * test = new Child();
Foo foo;
foo.doStuff(test);
我收到一条编译时错误消息:
错误:没有匹配的函数调用 foo::doStuff...
如果我不使用对指针的引用(案例 C) ,则没有问题
Base *&
在调用 to 之前,我还尝试将测试对象强制转换为对象doStuff
,但我想让它像case C一样工作。
有什么想法吗?
编辑:
它是: Child * myChild = new Child(); //不是基础 * myChild = new Child();