У меня есть следующая программа, которая не компилируется:C++ множественное наследование - одни и те же методы в базовых классах, но с разными аргументами
class Interface1
{
virtual void f() = 0;
};
class Interface2
{
virtual void f(int i) = 0;
};
class Interface3 : public Interface1,
public Interface2
{};
class C : public Interface3
{
virtual void f() {}
virtual void f(int i) {}
};
int main()
{
Interface3* inter = new C();
inter->f(); // Error
}
Что не так? Означает ли это, что не имеет значения, имеют ли методы разные типы аргументов?
ошибка: запрос члена 'F' неоднозначен
Примечание: кандидаты: виртуальная пустота Interface1 :: F()
...
примечание: виртуальная пустота Interface2 :: F (INT I)
_Что такое? _ 'Введите код здесь'. Пожалуйста, исправьте свой вопрос. Спасибо. – skypjack
При публикации вопросов о ошибках сборки всегда включайте фактическую ошибку в теле вопроса. Измените свой вопрос, включив в вопрос полный, полный и неотредактированный вывод ошибки (включая возможные информационные заметки). Затем также укажите, где находятся ошибки в коде, который вы показываете, например, комментарием. Пожалуйста, [прочитайте о том, как задавать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask), и узнайте, как создать [Минимальный, Полный и Подтверждаемый пример] (http: // stackoverflow. ком/помощь/mcve). –
Проблема заключается в объявлении 'class Interface3' (typo **' {}: '** вместо **' {}; '**). –