3 つのクラスがあるとします。
class X{};
class Y{};
class Both : public X, public Y {};
つまり、2 つのクラスがあり、その両方を拡張する 3 番目のクラス (多重継承) があります。
ここで、別のクラスで定義された関数があるとします。
void doIt(X *arg) { }
void doIt(Y *arg) { }
そして、両方のインスタンスでこの関数を呼び出します。
doIt(new Both());
これにより、関数呼び出しがあいまいであることを示すコンパイル時エラーが発生します。
これ以外に、C++ コンパイラが呼び出しがあいまいであると判断し、エラーをスローするケースはありますか? コンパイラはこれらのケースが何であるかをどのように判断しますか?