Войти
ФлеймФорумПрограммирование

Вопросы по C++ (5 стр)

Страницы: 14 5 6 79 Следующая »
#60
19:25, 25 фев. 2017

Программирование - это в принципе не нормально. Если тебе понадобилось программирование , скорее всего ты что-то делаешь не так (Ганс не даст соврать).


#61
22:46, 25 фев. 2017

Нормальность - это в принципе не нормально. Если тебе понадобилась нормальность , скорее всего ты что-то делаешь не так.

#62
11:56, 27 фев. 2017

1. почему для приведения указателя в паскале достаточно MyClass(Pointer), а в с++ нужно делать через всякие reinterpret_cast?

2. почему в паскале вообще не надо указывать используемые библиотеки (-lGL и т.д.)?

3. как вы терпите, что шаблоны в с++ противоречат концепции разделения кода - интерфейс в заголовочном файле, реализация в срр?

#63
12:13, 27 фев. 2017

dedm0zaj
Можно же как то так
Rect* pointer = (rect*) other

#64
12:14, 27 фев. 2017

dedm0zaj
> 3. как вы терпите, что шаблоны в с++ противоречат концепции разделения кода -
> интерфейс в заголовочном файле, реализация в срр?

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

> почему для приведения указателя в паскале достаточно MyClass(Pointer), а в с++
> нужно делать через всякие reinterpret_cast?

Можно и как в паскале сделать реализацию, это наверное будет конструктор inplace.
А можно наоборот (MyClass)Ptr, по сишному,  а можно  через reinterppret_class в рантайме,  можно через static_cast если естъ уверенность, можно через dynamic_cast при других условиях...

#65
12:26, 27 фев. 2017

dedm0zaj

1. Не очень понятно что ты имеешь ввиду, потому что даже такое в С++ работает: http://ideone.com/78T2sY Вопрос снят?
2. В паскале более продвинутый формат ну или можно сказать пайплайн компиляции
3. Никак, шаблоны не нуждаются в разделении кода на интерфейс и реализацию.

#66
12:29, 27 фев. 2017

dave
> А можно наоборот (MyClass)Ptr

в моем случае, когда пытаюсь в простой функции (или статическом методе) обработчика событий окна winapi из ранее предоставленного this класса окна получить указатель на этот класс окна, такой способ не работает. только через касты.
в паскалке то же самое таким способом работает. может в паскале это заэувалированный каст?

#67
12:33, 27 фев. 2017

=A=L=X=
> 3. Никак, шаблоны не нуждаются в разделении кода на интерфейс и реализацию.

может тогда и остальной код не нуждается в разделении? :D всё писать в заголовочных файлах

#68
12:34, 27 фев. 2017

dedm0zaj
> из ранее предоставленного this класса окна получить указатель на этот класс
> окна, такой способ не работает

Могут быть некоторые сложности при множественном наследовании, но на твой случай не похоже. Код бы что ли...

#69
12:35, 27 фев. 2017

dedm0zaj
> может тогда и остальной код не нуждается в разделении? :D всё писать в
> заголовочных файлах

Нет, остальной код как раз нуждается в разделении в связи с п.2.
Т.к. у шаблонов другие реалии линковки, то они в этом не нуждаются.

#70
12:40, 27 фев. 2017

dedm0zaj
> в моем случае, когда пытаюсь в простой функции (или статическом методе)
> обработчика событий окна winapi из ранее предоставленного this класса окна
> получить указатель на этот класс окна, такой способ не работает.

Обычно это проблема у неприводимых типов. Реинтерпрет каст это лом в этом случае. И нет надежности что это будет работать. Так как скорее всего это будет баг, так как компилятор имеет представление о приводимом типе данных.

> только через
> касты.

Только через Реинтерпрет каст, остальные должны фейлится.

#71
12:43, 27 фев. 2017

dave
> Обычно это проблема у неприводимых типов.

По стандарту любой указатель может быть приведен в void * чтобы потом без ошибок быть обратно приведенным к оригиналу. Похоже всё таки он что-то сделал не так.

#72
12:43, 27 фев. 2017

dedm0zaj
> 1. почему для приведения указателя в паскале достаточно MyClass(Pointer), а в
> с++ нужно делать через всякие reinterpret_cast?
на плюсах можно по всякому.
например так:

sample* p(pOther);

reinterpret_cast, как и сишный каст - грязные (небезопасные) средства.
обычно используются где-то в потрохах инструменталки.
в юзерском же коде не приветствуются.

dedm0zaj
> почему в паскале вообще не надо указывать используемые библиотеки (-lGL и
> т.д.)?

вы темко не попутали?
тут вопросы по части с++.
этот вопрос задавайте паскалистам.

dedm0zaj
> как вы терпите, что шаблоны в с++ противоречат концепции разделения кода -
> интерфейс в заголовочном файле, реализация в срр?

разделение на уровне h/impl

#73
12:44, 27 фев. 2017

хотя с окном пример не оч.

допустим создаю поток внутри класса с помощью CreateThread. в качестве поточной функции нельзя указать метод. поэтому передаю обычную функцию и в качестве одного из параметра this моего класса.
в поточной функции преобразовываю поинтер (lpParam) обратно в мой класс. и вот тут (MyClass)lpParam не наботает. нужен reinterpret_cast

#74
12:47, 27 фев. 2017

=A=L=X=
> Код бы что ли...

предоставлю, как дома буду. но лучше пример с потоком, ибо он проще.

Страницы: 14 5 6 79 Следующая »
ФлеймФорумПрограммирование