Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
#1

Наследование через превосходство. Как исправить? - C++

29.12.2012, 18:51. Просмотров 485. Ответов 4
Метки нет (Все метки)

Схема классов на изображении снизу. При данной иерархии компилятор выдает предупреждение: "Client: наследуется "Human::Human::funk1" через превосходство". И собственно вопрос: как это исправить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class IData {
public:
    virtual ~IData() = 0 {}
};
 
class IHuman: virtual public IData {
public:
    virtual void funk1() = 0;
};
 
class IClient: virtual public IHuman {
public:
    virtual void funk2() = 0;
};
 
class Human: virtual public IHuman {
public:
    void funk1() {}
};
 
class Client: public IClient, public Human {
public:
    void funk2() {};
};
 
int main() {
    IClient* client = new Client;
    client->funk1();
    client->funk2();
}
Миниатюры
Наследование через превосходство. Как исправить?  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2012, 18:51     Наследование через превосходство. Как исправить?
Посмотрите здесь:

Очень срочно , через 2 дня сдача) (композиция, наследование) C++
Обьясните как правильно организовывать наследование C++
C++ Наследование,как сделать?
Как реализовать наследование классов C++
Исправить ошибку в коде на наследование C++
C++ Как правильно писать наследование
Закрытое наследование, как добраться до функции? C++
Исправить программу, чтобы присутствовало наследование C++
C++ Убрать дублирование кода через наследование
Как правильно реализовать множественное наследование? C++
Нужно сделать композицию классов через объектные поля. (Не наследование!) C++
Найти причины возникновения ошибок в коде и исправить эти ошибки (наследование) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
29.12.2012, 19:02     Наследование через превосходство. Как исправить? #2
Не вижу проблем. gcc не ругается: http://liveworkspace.org/code/4DxqJm . Чем компилируете?
Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
29.12.2012, 19:03  [ТС]     Наследование через превосходство. Как исправить? #3
gray_fox, VS 2010. Ну если gcc сказал, что ок, то думаю можно просто отключить этот warning
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
29.12.2012, 19:20     Наследование через превосходство. Как исправить? #4
Цитата Сообщение от Riderik Посмотреть сообщение
VS 2010
Да, действительно. Думаю это баг.

Добавлено через 2 минуты
На msdn по этому поводу негодуют в комментариях: http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx
Croessmah
Модератор
Эксперт CЭксперт С++
12730 / 7190 / 802
Регистрация: 27.09.2012
Сообщений: 17,738
Записей в блоге: 2
Завершенные тесты: 1
29.12.2012, 22:10     Наследование через превосходство. Как исправить? #5
Цитата Сообщение от Riderik Посмотреть сообщение
И собственно вопрос: как это исправить?
Если надоедает, то:
C++
1
#pragma warning( disable : 4250 )
Yandex
Объявления
29.12.2012, 22:10     Наследование через превосходство. Как исправить?
Ответ Создать тему
Опции темы

Текущее время: 16:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru