Здравствуйте, Ovl, Вы писали:
F_M>>По одному (я в коде не копировал только реализации функций). Без параметров.
Ovl>интересно. Ovl>слушайте, вы можете создать инстанс ActionObject и пройти в дебагере его создание? а затем посмотреть Id сразу после создания
После выполнения конструктора Object id приравнивалось числу, после выполниния конструктора ActionObject — обнулялось. С включенным в список инициализации конструктором Object — не обнулялось. Я сейчас вообще вынес генерацию этого id в отдельный класс. Тогда не обнуляется, даже если не включать в список инициализации конструктор Object.
Здравствуйте, Force_Majeure, Вы писали:
F_M>После выполнения конструктора Object id приравнивалось числу, после выполниния конструктора ActionObject — обнулялось. С включенным в список инициализации конструктором Object — не обнулялось. Я сейчас вообще вынес генерацию этого id в отдельный класс. Тогда не обнуляется, даже если не включать в список инициализации конструктор Object.
Здравствуйте, Fwiffo, Вы писали:
F>Здравствуйте, Force_Majeure, Вы писали:
F_M>>После выполнения конструктора Object id приравнивалось числу, после выполниния конструктора ActionObject — обнулялось. С включенным в список инициализации конструктором Object — не обнулялось. Я сейчас вообще вынес генерацию этого id в отдельный класс. Тогда не обнуляется, даже если не включать в список инициализации конструктор Object.
F>А какой компилятор? Не borland случайно?
Здравствуйте, Force_Majeure, Вы писали:
F_M>Нет, VC++2005
В 2005 этот код работает правильно после минимальных изменений, чтобы компилировалось. Так что ошибка где-то в другом месте. Было бы интересно посмотреть на пример, воспроизводящий ошибку. Непонятно, почему наличие списка инициализации на что-то влияет.
Здравствуйте, Fwiffo, Вы писали:
F>Здравствуйте, Force_Majeure, Вы писали:
F_M>>Нет, VC++2005
F>В 2005 этот код работает правильно после минимальных изменений, чтобы компилировалось. Так что ошибка где-то в другом месте. Было бы интересно посмотреть на пример, воспроизводящий ошибку. Непонятно, почему наличие списка инициализации на что-то влияет.
Здравствуйте, Force_Majeure, Вы писали:
F_M>Я тоже так и не понял причину. Хорощо, что хоть устранилась. F_M>Реальные куски кода из проекта я кидал сюда http://www.rsdn.ru/forum/cpp/3487631.1.aspx
Ага, я этот и компилировал. Вот он на 2005 работает. Т.е. понятно, что список инициализации это затычка, скрывающая настоящую проблему, но интересно было бы понять, почему это что-то меняет. Казалось бы на ассемблерный код это вообще не должно влиять.
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.
P>Это называется список инициализации. В коде который ты показал сначала как якобы ошибочный P>был конструктор автоматически сгенеренный компилятором, так как твоего конструктора не было. P>Автоматически компилятор сгенерил код который предка инициализирует. P>В реальном коде явно прописан конструктор, а значит что ты написал то и будет, т.е. если P>нет инициализации она и не произойдет. P>В этом конструкторе ты не инициализировал предка. Соответственно конструктор предка не вызывался.
Слушайте, я от вас как бы слегка в шоке и в то же время как бы слегка восхищаюсь. Так самоуверенно и убежденно уверять собеседника в том, чего не знаешь — это надо иметь талант, которого у меня, к сожалению, никогда не было.
Здравствуйте, Аноним, Вы писали:
А>Слушайте, я от вас как бы слегка в шоке и в то же время как бы слегка восхищаюсь. Так самоуверенно и убежденно уверять собеседника в том, чего не знаешь — это надо иметь талант, которого у меня, к сожалению, никогда не было.
Это не талант это, рассинхронизация 8). Иной раз думаешь о чем то своем и *вдруг* замечаешь, что уже минут пятнадцать несешь откровенную чушь.
Причем как только сознание регистрирует сразу фиксирует что чушь, но все вокруг внимательно слушают и даже верят пока сами не включат сознание.
В данном случае подсознание высосало из пальца объяснение отталкиваясь от факта который никто кроме него объяснить так и не смог насколько я вижу.
Так что признаю было "уверять собеседника в том, чего не знаешь". НО "самоуверенно и убежденно" отвергаю 8).
А вопрос остается и, коль скоро Вы считаете что знаете (а как еще можно утверждать что не знаю я?),
очень хочется узнать ответ:
Почему исходный код не работал?
Почему мое предложение сработало?