如果我有两个抽象类定义了一个具有相同名称但不同的非协变返回类型的纯虚函数,我如何从这些类派生并为它们的两个函数定义一个实现?
#include <iostream>
class ITestA {
public:
virtual ~ITestA() {};
virtual float test() =0;
};
class ITestB {
public:
virtual ~ITestB() {};
virtual bool test() =0;
};
class C : public ITestA, public ITestB {
public:
/* Somehow implement ITestA::test and ITestB::test */
};
int main() {
ITestA *a = new C();
std::cout << a->test() << std::endl; // should print a float, like "3.14"
ITestB *b = dynamic_cast<ITestB *>(a);
if (b) {
std::cout << b->test() << std::endl; // should print "1" or "0"
}
delete(a);
return 0;
}
只要我不直接调用 C::test() 就没有任何歧义,所以我认为它应该以某种方式工作,我想我只是还没有找到正确的符号。或者这是不可能的,如果是这样:为什么?