Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.04.2016, 16:29   #181
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
#include <iostream>
using namespace std;

class Super{
	public:
	   void Test()
	   {
	   		cout<<"Test"<<endl;
	   }
	   };
class A:public Super{};
class B:public Super{};
class C:public Super{};
class Mega:public A,public B,public C{};

int main() {
	Super* s=(A*)new Mega();
	s->Test();
	delete s;
	return 0;
}
https://ideone.com/oM1eFn
даст вам вашу структуру классов что вы заказали.
так как структура изначально требует множественного наследования избежать его нельзя, но в то же время ее нельзя реализовать на языке без множественного наследования.
в реальности такая структура обычно показатель неверного планирования.

но теперь вопрос к вам, как вы собираетесь сделать туже структуру классов в управляемых классах?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 03.04.2016 в 16:41.
Пепел Феникса вне форума
Старый 03.04.2016, 16:57   #182
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
[CODE]#

но теперь вопрос к вам, как вы собираетесь сделать туже структуру классов в управляемых классах?
сделаю. после того как выяснится следующее

в вашем коде есть одна болячка которую вы явно не увидели.

сколько раз у вас будет вызван конструктор класса Super ?

тота - же
RAFA91 вне форума
Старый 03.04.2016, 16:59   #183
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
сделаю. после того как выяснится следующее

в вашем коде есть одна болячка которую вы явно не увидели.

сколько раз у вас будет вызван конструктор класса Super ?

тота - же
три раза, и мне это известно.
и так и должно быть.
так как класс Mega должен быть полностью инициализированным классом A,B и C.
инициализация содержит вызовы цепочек конструкторов.

и да, перестаньте пытаться умничать, глупо выглядите.

теперь жду вашей реализации.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 03.04.2016 в 17:02.
Пепел Феникса вне форума
Старый 04.04.2016, 12:05   #184
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
три раза, и мне это известно.
и так и должно быть.
нет так быть не должно. для этого есть аспиринчик.

Конструктор Super 2 0xbfcbdffc
Конструктор A 2 0xbfcbdffc
Конструктор Super 2 0xbfcbe004


для понимания

Код:
#include <iostream>
using namespace std;

class Super
{
	int x;
	public:
	Super() : x(0) {cout << "Конструктор Super 1 "<<this<<endl;}
	Super(int _x) : x(_x) {cout << "Конструктор Super 2 "<<this<<endl;}
	~Super()  {cout << "Деструктор Super  "<<this<<endl;}
	int get() {return x;}
};
class A : public  Super
{
	int x;
	public:
	A() : x(0) {cout << "Конструктор A 1 "<<this<<endl;}
	A(int _x) : Super(2*_x), x(_x) {cout << "Конструктор A 2 "<<this<<endl;}
	~A()  {cout << "Деструктор A   "<<this<<endl;}
	int get() {return x;}
	
};
class B :  public  Super
{
	int x;
	public:
	B() : x(0) {cout << "Конструктор B 1 "<<this<<endl;}
	B(int _x) : Super(3*_x), x(_x) {cout << "Конструктор B 2 "<<this<<endl;}
	~B()  {cout << "Деструктор B   "<<this<<endl;}
	int get() {return x;}
	
};

class Mega:public A,public B 
{
	int x;
	public:
	Mega() : x(0) {cout << "Конструктор Mega 1 "<<this<<endl;}
	Mega(int _x) :  A(2*_x), B(3*_x), x(_x) {cout << "Конструктор Mega 2 "<<this<<endl;}
	~Mega()  {cout << "Деструктор Mega   "<<this<<endl;}
	int get() {return x;}
	
};

int main() {
	
    Mega a(80);
   // cout<<a.get()<<endl;
	return 0;
}

Последний раз редактировалось RAFA91; 04.04.2016 в 12:47.
RAFA91 вне форума
Старый 04.04.2016, 13:37   #185
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я повторюсь я знаю что он вызывается для разных адресов.
Цитата:
нет так быть не должно.
кто сказал?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 04.04.2016, 13:43   #186
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
кто сказал?
умные учебники это говорят. а также говорят про устранение этого явления.

неужели до сих пор не поняли что чистых плюсы это анархия со свои

множественным наследованием..
RAFA91 вне форума
Старый 04.04.2016, 13:49   #187
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
умные учебники это говорят. а также говорят про устранение этого явления.

неужели до сих пор не поняли что чистых плюсы это анархия со свои

множественным наследованием..
ну так не используйте множественное наследование.
про виртуальное наследование я знаю.
оно не часто все равно надо.

так же вы говорили что реализуете ту же диаграмму классов на управляемых классах.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 04.04.2016, 14:00   #188
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
так же вы говорили что реализуете ту же диаграмму классов на управляемых классах.
Видать вы сильно привязаны к множественному наследованию плюсов, раз

не знаете что в нормальных языках его нету, со своими вышеприведенными

болячками. про виртуальный деструктор в вашем примере нечего.

зачем тогда делали полиморфизм не пойму.

виртуальное наследование требует инициализации класса Super только

через Mega что видет к разрушению принципов наследования.
RAFA91 вне форума
Старый 04.04.2016, 14:11   #189
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а теперь по порядку, пора отвечать за свои домыслы.
Цитата:
Видать вы сильно привязаны к множественному наследованию плюсов
я вообще не пишу на плюсах более, облом
пишу в основном на C#.
Цитата:
не знаете что в нормальных языках его нету, со своими вышеприведенными болячками.
С++ нормальный язык в руках нормального программиста.
возможностей много, а если вы хотите себе прострелить ногу он не запрещает.
только не инструмент виноват. такую диаграмму в реальном приложении не встретишь.
Цитата:
про виртуальный деструктор в вашем примере нечего.
не о нем была речь потому что.
Цитата:
зачем тогда делали полиморфизм не пойму.
потому что ООП, не?
я то ничего не делал, просто показал пример. это ж не продакшн.
Цитата:
виртуальное наследование требует инициализации класса Super только
через Mega что видет к разрушению принципов наследования.
не ведет.

ну и далее, где ваша реализация той же структуры классов на языке без множественного наследования?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 04.04.2016, 14:13   #190
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а теперь по порядку, пора отвечать за свои домыслы.
я не знаю что вы там себе придумали.
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а
потому что ООП, не?
?
если нету полиморфизма значит это не ооп.
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а

ну и далее, где ваша реализация той же структуры классов на языке без множественного наследования?
на интерфейсах свободно.

Последний раз редактировалось RAFA91; 04.04.2016 в 14:17.
RAFA91 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дебаг С++/CLI Максим 116 Помощь студентам 3 27.12.2013 22:17
Ошибки в C++/CLI Максим 116 Помощь студентам 2 25.12.2013 22:45
c++/cli danzel1 Общие вопросы C/C++ 3 25.07.2011 17:11
C/C++/CLI. Ynxarmed Visual C++ 1 31.08.2010 07:43
advapi32 и C++/CLI Artem89 Общие вопросы .NET 1 20.12.2009 18:22