@AlexB_49
Студент

Как исправить ошибку «переопределение виртуальной функции неоднозначно» (множественное наследование, С++)?

Здравствуйте. У меня проблема с множественным наследованием.
Есть базовый класс:
class CDevice 
{
protected:
	string Brand;
public:
	virtual bool TurnOn() = 0
	{
		cout << "The device is turned on." << endl;
	}
};

И есть два класса, которые наследуются от него.
Первый класс:
class CPrinter : virtual public CDevice
{
protected:
	string Color;
public:
	virtual bool TurnOn()
	{
		cout << "The printer is turned on." << endl;
	}
};

Второй класс:
class CScanner : virtual public CDevice
{
protected:
	int Resolution;
public:
	virtual bool TurnOn()
	{
		cout << "The scanner is turned on." << endl;
	}
};

И уже от этих двух классов должен унаследоватся ещё один класс:
class CMFD : public CPrinter, CScanner
{

};

Но уже при создании компилятор сообщает об ошибке: override of virtual function "CDevice::TurnOn" is ambiguous
В чем проблема и как её исправить?
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 1
@TheNicknameIsAlreadyTaken
Ты наследуешь 2 одинаково названных метода. Он не понимает какой ты хочешь. Наверное.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Web Control Москва
от 150 000 до 250 000 ₽
CodeX Нижний Новгород
от 30 000 до 80 000 ₽
CodeX Нижний Новгород
от 30 000 до 80 000 ₽