#include <iostream>
class type_one
{
};
class type_two
{
};
class i_one
{
public:
virtual void set (const type_one & val, int id) = 0;
};
class i_two
{
public:
virtual void set (const type_two & val) = 0;
};
class i_one_two:public i_one, public i_two
{
};
class OneTwo:public i_one_two
{
public:
void set (const type_one & val, int id)
{
std::cout << "type_one value, id = " << id;
}
void set (const type_two & val)
{
std::cout << "type_two value\n";
}
};
int
main ()
{
OneTwo ot;
i_one_two *i12 = &ot;
i12->set(type_one (), 111); // error: request for member ‘set’ is ambiguous
i12->set(type_two ()); // error: request for member ‘set’ is ambiguous
return 0;
}
//==============================
main.cpp: In function ‘int main()’:
main.cpp:52:8: error: request for member ‘set’ is ambiguous
i12->set(type_one (), 111);
^~~
main.cpp:20:16: note: candidates are: virtual void i_two::set(const type_two&)
virtual void set (const type_two & val) = 0;
^~~
main.cpp:14:16: note: virtual void i_one::set(const type_one&, int)
virtual void set (const type_one & val, int id) = 0;
^~~
main.cpp:53:8: error: request for member ‘set’ is ambiguous
i12->set(type_two ());
^~~
main.cpp:20:16: note: candidates are: virtual void i_two::set(const type_two&)
virtual void set (const type_two & val) = 0;
^~~
main.cpp:14:16: note: virtual void i_one::set(const type_one&, int)
virtual void set (const type_one & val, int id) = 0;
^~~