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

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

18.05.2013, 20:33. Показов 2516. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru