@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
В чем проблема и как её исправить?
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
@TheNicknameIsAlreadyTaken
Ты наследуешь 2 одинаково названных метода. Он не понимает какой ты хочешь. Наверное.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы