Re[6]: как сделать уникальный идентификатор?
От: Ovl Россия  
Дата: 31.07.09 06:37
Оценка:
а сколько конструкторов у каждого класса у вас написано?
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re[7]: как сделать уникальный идентификатор?
От: Force_Majeure Россия  
Дата: 31.07.09 07:14
Оценка:
Здравствуйте, Ovl, Вы писали:

Ovl>а сколько конструкторов у каждого класса у вас написано?


По одному (я в коде не копировал только реализации функций). Без параметров.
Re[8]: как сделать уникальный идентификатор?
От: Ovl Россия  
Дата: 31.07.09 07:28
Оценка:
F_M>По одному (я в коде не копировал только реализации функций). Без параметров.

интересно.
слушайте, вы можете создать инстанс ActionObject и пройти в дебагере его создание? а затем посмотреть Id сразу после создания
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re[9]: как сделать уникальный идентификатор?
От: Force_Majeure Россия  
Дата: 31.07.09 08:58
Оценка:
Здравствуйте, Ovl, Вы писали:

F_M>>По одному (я в коде не копировал только реализации функций). Без параметров.


Ovl>интересно.

Ovl>слушайте, вы можете создать инстанс ActionObject и пройти в дебагере его создание? а затем посмотреть Id сразу после создания

После выполнения конструктора Object id приравнивалось числу, после выполниния конструктора ActionObject — обнулялось. С включенным в список инициализации конструктором Object — не обнулялось. Я сейчас вообще вынес генерацию этого id в отдельный класс. Тогда не обнуляется, даже если не включать в список инициализации конструктор Object.
Re[10]: как сделать уникальный идентификатор?
От: Fwiffo Россия  
Дата: 31.07.09 09:15
Оценка:
Здравствуйте, Force_Majeure, Вы писали:

F_M>После выполнения конструктора Object id приравнивалось числу, после выполниния конструктора ActionObject — обнулялось. С включенным в список инициализации конструктором Object — не обнулялось. Я сейчас вообще вынес генерацию этого id в отдельный класс. Тогда не обнуляется, даже если не включать в список инициализации конструктор Object.


А какой компилятор? Не borland случайно?
Re[11]: как сделать уникальный идентификатор?
От: Force_Majeure Россия  
Дата: 31.07.09 09:29
Оценка:
Здравствуйте, Fwiffo, Вы писали:

F>Здравствуйте, Force_Majeure, Вы писали:


F_M>>После выполнения конструктора Object id приравнивалось числу, после выполниния конструктора ActionObject — обнулялось. С включенным в список инициализации конструктором Object — не обнулялось. Я сейчас вообще вынес генерацию этого id в отдельный класс. Тогда не обнуляется, даже если не включать в список инициализации конструктор Object.


F>А какой компилятор? Не borland случайно?


Нет, VC++2005
Re[12]: как сделать уникальный идентификатор?
От: Fwiffo Россия  
Дата: 31.07.09 10:00
Оценка:
Здравствуйте, Force_Majeure, Вы писали:

F_M>Нет, VC++2005


В 2005 этот код работает правильно после минимальных изменений, чтобы компилировалось. Так что ошибка где-то в другом месте. Было бы интересно посмотреть на пример, воспроизводящий ошибку. Непонятно, почему наличие списка инициализации на что-то влияет.
Re[13]: как сделать уникальный идентификатор?
От: Force_Majeure Россия  
Дата: 31.07.09 11:04
Оценка:
Здравствуйте, Fwiffo, Вы писали:

F>Здравствуйте, Force_Majeure, Вы писали:


F_M>>Нет, VC++2005


F>В 2005 этот код работает правильно после минимальных изменений, чтобы компилировалось. Так что ошибка где-то в другом месте. Было бы интересно посмотреть на пример, воспроизводящий ошибку. Непонятно, почему наличие списка инициализации на что-то влияет.


Я тоже так и не понял причину. Хорощо, что хоть устранилась.
Реальные куски кода из проекта я кидал сюда http://www.rsdn.ru/forum/cpp/3487631.1.aspx
Автор: Force_Majeure
Дата: 30.07.09
Re[14]: как сделать уникальный идентификатор?
От: Fwiffo Россия  
Дата: 31.07.09 11:10
Оценка:
Здравствуйте, Force_Majeure, Вы писали:

F_M>Я тоже так и не понял причину. Хорощо, что хоть устранилась.

F_M>Реальные куски кода из проекта я кидал сюда http://www.rsdn.ru/forum/cpp/3487631.1.aspx
Автор: Force_Majeure
Дата: 30.07.09


Ага, я этот и компилировал. Вот он на 2005 работает. Т.е. понятно, что список инициализации это затычка, скрывающая настоящую проблему, но интересно было бы понять, почему это что-то меняет. Казалось бы на ассемблерный код это вообще не должно влиять.
Re[3]: как сделать уникальный идентификатор?
От: Vamp Россия  
Дата: 31.07.09 12:16
Оценка:
DAS>Наверное ex1.id и ex2.id.
Конечно. Опечатка.

DAS>c++ static_var.cpp -o static_var

Наверное, g++?

DAS>demas@arch ~/sources/study/cpp/oop $ gcc static_var.cpp -o static_var

gcc — это с-компилятор. Чтобы компилировать С++ код, используй g++.
Да здравствует мыло душистое и веревка пушистая.
Re[11]: как сделать уникальный идентификатор?
От: Аноним  
Дата: 31.07.09 13:48
Оценка:
Здравствуйте, pivcorp, Вы писали:

P>Поскольку правы Вы (я проверил), а код он привел, интересно все же узнать

P> почему изменение которое предложил я сработало.

потому что случаи 1 и 2 отличаются (см. стандарт):
Object o1;      //1
Obkect o2();    //2


вы в явном виде указали 2, поэтому заработало, до этого был 1
Re[12]: как сделать уникальный идентификатор?
От: Аноним  
Дата: 01.08.09 19:34
Оценка:
А>потому что случаи 1 и 2 отличаются (см. стандарт):
А>
А>Object o1;      //1
А>Obkect o2();    //2
А>


Ну да, случаи отличаются: во втором случае объявляется прототип функции, возвращающей Obkect.

И чо?
Re[7]: как сделать уникальный идентификатор?
От: Аноним  
Дата: 01.08.09 19:41
Оценка: 1 (1)
P>Это называется список инициализации. В коде который ты показал сначала как якобы ошибочный
P>был конструктор автоматически сгенеренный компилятором, так как твоего конструктора не было.
P>Автоматически компилятор сгенерил код который предка инициализирует.
P>В реальном коде явно прописан конструктор, а значит что ты написал то и будет, т.е. если
P>нет инициализации она и не произойдет.
P>В этом конструкторе ты не инициализировал предка. Соответственно конструктор предка не вызывался.

Слушайте, я от вас как бы слегка в шоке и в то же время как бы слегка восхищаюсь. Так самоуверенно и убежденно уверять собеседника в том, чего не знаешь — это надо иметь талант, которого у меня, к сожалению, никогда не было.
Re[8]: как сделать уникальный идентификатор?
От: pivcorp Россия  
Дата: 03.08.09 04:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Слушайте, я от вас как бы слегка в шоке и в то же время как бы слегка восхищаюсь. Так самоуверенно и убежденно уверять собеседника в том, чего не знаешь — это надо иметь талант, которого у меня, к сожалению, никогда не было.


Это не талант это, рассинхронизация 8). Иной раз думаешь о чем то своем и *вдруг* замечаешь, что уже минут пятнадцать несешь откровенную чушь.
Причем как только сознание регистрирует сразу фиксирует что чушь, но все вокруг внимательно слушают и даже верят пока сами не включат сознание.


В данном случае подсознание высосало из пальца объяснение отталкиваясь от факта который никто кроме него объяснить так и не смог насколько я вижу.

Так что признаю было "уверять собеседника в том, чего не знаешь". НО "самоуверенно и убежденно" отвергаю 8).

А вопрос остается и, коль скоро Вы считаете что знаете (а как еще можно утверждать что не знаю я?),
очень хочется узнать ответ:
Почему исходный код не работал?
Почему мое предложение сработало?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.