这是一个简单的问题(我认为)。我只是不知道这件事,我正在寻找一个好的解决方案太:)C++:继承优先
比方说,我有这样的:
class Base {
public:
virtual ~Base() {}
virtual Base& connect(Base &b) = 0;
}
class Derived: public Base {
public:
virtual ~Derived() {}
virtual Base& connect(Base &b)
{
// do_something
}
}
// Name is a class that is basically a String and assign it to any A or B object.
class A: public Derived {
public:
A(name N) { ... }
virtual ~A() {}
}
class B: public Derived {
public:
B(name N) { ... }
virtual ~B() {}
A& connect(A &a)
{
// do something else
}
}
int main(int argc, char *argv[])
{
A objA("A");
B objB("B");
// Here's where is my issue
objB.connect(objA);
}
当我打电话objB.connect(objA)
,它实际上是调用Base& connect(Base &b)
。我明白,因为他们都是Base
的孩子,并且都有Derived
中定义的connect()
。但事情是,我希望每当我有objB.connect(objA)
时,它应该调用A& connect(A &a)
来代替。
我想知道是否有办法以我想要的方式拥有它。
谢谢:)
UPDATE
我编辑的这一点,因为我有几个错别字。我没有复制粘贴代码,因为它比我希望的复杂得多。 <希望它够了。
显示编译的代码。 'objA = new A();'用指针初始化一个对象。你的bug可能是对引用或强制转换(或其他类型问题)的细微误用,所以我们需要*精确*代码来重现它。 – Angew
你在连接(A&a)的定义中忘记了'virtual' – Thomas
这个东西不会编译'A objA = new A()'。我用过的所有编译器都拒绝编译这一行。你是如何得到你的输出的? – DumbCoder