Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 0
Регистрация: 02.07.2009
Сообщений: 52

Интерфейсы и наследования

18.05.2013, 20:33. Показов 2856. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такая структура
C++
1
2
3
4
5
6
7
8
9
10
class Base
{
public:
virtual  void SomeBaseFun()=0;
}
class Object1: public Base
{
public:
virtual void SomeObject1Fun()=0;
}
это сам интерфейс , дальше идет реализация интерфейса
C++
1
2
3
4
5
6
7
8
9
10
class _Base: public Base
{
public:
void SomeBaseFun() {return 1;}
}
class _Object1: public Object1, public _Base
{
public:
void SomeObject1Fun()  {return 2;}
}
так вот
C++
1
Object1 *a=new _Object1;
ошибка так как _Object1 абстрактный метод SomeBaseFun()=0;
Вот теперь сама задача , класс Object1 который абстрактный ничего не должен знать о не абстрактных классах
то есть его нельзя наследовать от _Base, более того класс Base и _Base всегда один а вот классов Object десятки Object1 Object2 Object3- ObjectN , тесть писать class _Base: public Base, public Object1 нельзя , как заставить работать
C++
1
Object1 *a=new _Object1;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2013, 20:33
Ответы с готовыми решениями:

Чем отличаются структуры для наследования интерфейса от структур для наследования реализаций?
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с маленькой просьбой. Я никак не могу...

наследования
Приведите пожалуйста пару примеров наследования.

Наследования
Что именно наследует класс-потомок при наследовании? А что не наследует? Чем отличаются private, public и protected наследование?

28
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
18.05.2013, 21:57
Студворк — интернет-сервис помощи студентам
Andreyasu, А как из вне ты выставишь через виртуальный класс? Просто переопредели этот метод для нужных классво и все, либо поставь просто виртуальную функцию пустую, чтобы вызывать можно было и все.
0
2 / 2 / 0
Регистрация: 02.07.2009
Сообщений: 52
18.05.2013, 21:58  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
Andreyasu, А как из вне ты выставишь через виртуальный класс? Просто переопредели этот метод для нужных классво и все, либо поставь просто виртуальную функцию пустую, чтобы вызывать можно было и все.

Добавлено через 1 минуту
Andreyasu, В одном классе пытайся все делать. Я так делаю в основном делаю и норм.
Классов object могут быть десятки и у них одна большая база (набор методов) , глупо их писать каждый раз .
Код работает SetError выставляет более того GetIntError() работает правильно! Но вот именно GetTextError() возращает путсоту
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
18.05.2013, 22:03
Andreyasu, Я сам в проектировании не силен. Просто лишних классов не создавать.

Наверно Object1 и Ojject2 это лишние классы.

Цитата Сообщение от Andreyasu Посмотреть сообщение
Классов object могут быть десятки и у них одна большая база (набор методов) , глупо их писать каждый раз .
Код работает SetError выставляет более того GetIntError() работает правильно! Но вот именно GetTextError() возращает путсоту
Нет ну возможно ты и правильно спроектировал, тут как говорится: "кто как хочет так и дрочит". Ну читать сходу код не сильно легко. Пойдет лишь бы работал правильно и тебе понятно было.
0
2 / 2 / 0
Регистрация: 02.07.2009
Сообщений: 52
18.05.2013, 22:05  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
Andreyasu, Я сам в проектировании не силен. Просто лишних классов не создавать.

Наверно Object1 и Ojject2 это лишние классы.
У тя есть библиотека Животные , ты предлогаешь одни классом описать котов собак и верблюдов?
И при то что все одинаково ходят по большому ,или писают тоже одинаково (ну допустим) для каждого из сотни животных отдельно прописовать метод void пописать() или лучше вынести это в базис?
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
18.05.2013, 22:09
Andreyasu, Нут тут нужно наследование применять, выделить общий класс Животные, в нем собрать общие свойства и методы, а от него наследовать остальных животных.

Andreyasu, Просто мелкие проги бывают там на 500 строк или там на 1к. смысла нету разбивать, ну и дело вкуса наверно, а может и опытности.
0
2 / 2 / 0
Регистрация: 02.07.2009
Сообщений: 52
18.05.2013, 22:11  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
Andreyasu, Нут тут нужно наследование применять, выделить общий класс Животные, в нем собрать общие свойства и методы, а от него наследовать остальных животных.

Andreyasu, Просто мелкие проги бывают там на 500 строк или там на 1к. смысла нету разбивать, ну и дело вкуса наверно, а может и опытности.
Вот GObject и есть тот самый класс Животные
Тут почти 15000 строк, без четкого структурирования все бы было провалено)
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
18.05.2013, 22:13
Да у тебя еще Object1 и Object2 чисто виртуальные классы пустые, толку то от них?

Цитата Сообщение от Andreyasu Посмотреть сообщение
Тут почти 15000 строк
Да это дофигища, я таких исходников и не видел.
0
2 / 2 / 0
Регистрация: 02.07.2009
Сообщений: 52
18.05.2013, 22:15  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
Да у тебя еще Object1 и Object2 чисто виртуальные классы пустые, толку то от них?
Это внешний H файл поставляемый вместе с DLL а реализация внутри , это концепция проектирования DLL есть такая , когда на конченому программисту даются только интерфейсы работы с классами а не сами классы
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
18.05.2013, 22:19
Andreyasu, Ну примерно ясно. Там можно все что угодно дальше добавить от них, если это громадная программа. Object3 например может быть применимо двойное наследование и от него другой какой нить класс будет идти, и вызов будет уже совсем других методов. Можно все что угодно придумать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2013, 22:19

Наследования
#include <iostream> #include <string> using namespace std; class student { protected: int sem; string name; float...

интерфейсы в с ++
как то раз нашел в на просторах интернета инфу в которой говорилось что можно работать с интерфейсами в с++ без СОМ , в пример тому...

Интерфейсы
Вот не могу понять , берем вот такую структуру class Ab //интерфейс { public: virtual void GetNum()=0; }; class...

Виды наследования С++
Построить класс статистическая выборка числовых величин со свойствами: количество элементов выборки, массив элементов выборки и методами:...

Классы наследования
Необходима чтобы personcart содержал массив карточек персон (класс cart) как не крутил вечная ошибка fatal error LNK1120: 1 unresolved...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru