![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Вообщем обстоятельства таковы. Если классу CommandsEx наследовать виртуально класс ConfigEx и в методе AttachCommands инициализировать структуру из класса ConfigsEx и там же в AttachCommands вывести куда-нить данные, данные считываются нормально и отображается желаемый результат...
Но, если обратиться к этим же данным в методе CmdPost (this->CommadsReq.IsPost, и т.д.) данные почему то уже нулевые, как будто обнулились, почему так происходит? Если AttachConfig() вызвать в методе CmdPost, тогда все хорошо я получаю нужные мне данные, но такое меня не устраивает, метод CmdPost очень часто будет использоваться. Код:
Код:
Код:
Последний раз редактировалось coNsept; 20.06.2012 в 01:09. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Если не ясна суть проблемы или я как-то не четко выразился, скажите... я постараюсь изложить более подробно.
|
![]() |
![]() |
![]() |
#3 | |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2coNsept
неясно, на кой нужен префикс класса при объявлении конструкторов/деструкторов. тему ниасилил. многа букав Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
мне не понятно, зачем нужны глобальные переменные в данном случае, и почему они объявлены, как внешнии.
|
![]() |
![]() |
![]() |
#5 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2_Bers
очевидно же, чтобы доступ получать из разных точек программы. не синглтон - потому что объектов может быть несколько. как cin и cout.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
К тому же, судя по приведенному коду, данные глобальные объекты просятся быть деталью реализации механизмов, а не в свободном полете. |
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Обновил первый пост, так думаю понятнее будет.
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
![]()
Я чет не понял, зачем виртуальное наследование? Предполагается робовидная сложная иерархия? Не видать ее... Используй агрегирование, в любом нормальном учебнике по С++ написано: агрегирование предпочтительнее, чем наследование. Тем более у тебя не видно нигде "is a". Виртуальное наследование никак не регламентировано стандартом, поэтому как там оно реализовано разработчиками компилятора остается предметом дополнительного исследования. А обнуление, судя по всему из-за отсутствия вызова конструктора базового класса.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Последний раз редактировалось Krok27; 20.06.2012 в 10:06. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Проблема решилась, спасибо Krok27. Действительно не вызывался конструктор базового класса, его нужно вызывать явно.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Виртуальное время для игры | aleksandr278 | Помощь студентам | 13 | 20.03.2010 21:22 |
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта | User>lia | Общие вопросы Delphi | 4 | 16.01.2009 16:37 |
Автоматическое уничтожение объекта | mutabor | Общие вопросы Delphi | 6 | 25.06.2008 22:25 |
Виртуальное в виртульности (Virtual Machine) | Veiron | Свободное общение | 0 | 01.02.2008 21:27 |