同じ名前で異なる非共変の戻り型を持つ純粋仮想関数を定義する2つの抽象クラスがある場合、これらから派生して両方の関数の実装を定義するにはどうすればよいですか?
#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()を直接呼び出さない限り、あいまいなものは何もないので、なんとか機能するはずだと思います。正しい表記がまだ見つからなかったと思います。または、もしそうなら、これは不可能ですか:なぜですか?