![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Felixx |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Доброго время суток. У меня имеется проблемка небольшая, подскажите пожалуйста что не так сделано?..
Суть проблемы такова: Имеем абстрактный класс:
1й наследник:
2й Наследник:
В консоль выводитса: test2 test1 тоесть сначало из метода WriteImpl и только потом из конструктора.. С чем это может быть связано? Может что то не так написано? |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ты разделом ошибся.
|
|||
|
||||
| Felixx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
А куда нужно?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
http://forum.vingrad.ru/forum/dotnet-gener...ons-csharp.html а до диез так ничего... в описании класса... e.StackTrace - так вообще замечательно... /me goes to take a look at dotNet -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Felixx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 4.12.2008 Репутация: нет Всего: нет |
Да делал я конструктор, и в конструкторе инициализировал массив. Ничего не менялос Добавлено через 2 минуты и 56 секунд Тема переехала в свой раздел: http://forum.vingrad.ru/forum/act-ST/f-199...3/unread-1.html |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Перед выполнением конструктора класса (PROTOCOL_LOBBY_CREATE_ROOM_ACK) выполняется конструктор базового класса (PBLoginPacket)
В этом конструкторе вызывается абстрактный метод WriteImpl. Если бы ты писал на C++ - программа бы у тебя на этом вылетела бы. В C# вызывается переопределённый метод WriteImpl класса PROTOCOL_LOBBY_CREATE_ROOM_ACK, который печатает test2. После этого выполняется конструктор PROTOCOL_LOBBY_CREATE_ROOM_ACK, который печатает test1. Так что из коструктора виртуальные функции лучше не вызывать - в C# она может обратиться к ещё не иницализированным полям, в C++ можешь напоротся на вызов абстрактной функции, для которой определения нет - программа печатает pure virtual function called или что-то подобное и завершает работу. А так тебе надо в раздел C# |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
та не, я просто умилялся синтаксисом не std::move, а std::copy -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |