Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перегрузка оператора

4.3K
20 мая 2010 года
flat
142 / / 27.12.2005
Привет.
Хочу скомпилить подобный код (gcc):
 
Код:
class A
{
 virtual A operator+(const A &) const;
};

class B : public A
{
 virtual B operator+(const A &) const;
};

Получаю:
 
Код:
ошибка: некорректный ковариантный тип результата для ‘virtual B B::operator+(const A &) const’
ошибка:   отменяющий ‘virtual A A::operator+(const A &) const’


Как быть?
307
21 мая 2010 года
Artem_3A
863 / / 11.04.2008
ну, наверное, не следует этого делать! можешь конечно возвращать результатом сложения указатель на базовый класс, но это не очень красиво. так что лучше не используй виртуальность, а просто перегрузи необходимые операторы ручками.
350
25 мая 2010 года
cheburator
589 / / 01.06.2006
Виртуальные функции наследуют возвращаемый тип и все параметры.
Чтобы ваш оператор в классе B соотносился с соотв. оператором из класса A, возвращаемые типы должны быть одинаковы.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог