Войти
ПрограммированиеФорумОбщее

Инициализация поля при объявлении. (комментарии)

Страницы: 1 2 3 4 5 6 Следующая »
#0
15:39, 19 апр. 2013

Инициализация поля при объявлении. (комментарии)

Это сообщение сгенерировано автоматически.

#1
15:39, 19 апр. 2013

SHOW

#2
16:34, 19 апр. 2013

Я бы пунктуацию как-то так поправил (но я не редактор, может ошибаюсь).

При написании класса довольно часто хочется инициализировать некоторые поля сразу при объявлении.
В С++11 данную возможность уже добавили, но, к сожалению, ещё не все компиляторы поддерживают эту фичу. Среди неподдерживающих - компилятор от MS.
Вот как можно решить эту проблему (сразу скажу, что решение имеет ряд недостатков и подходит только для классов).
Для это нужно написать несколько макросов.

#3
17:29, 19 апр. 2013

kipar
пасиб.

#4
19:10, 19 апр. 2013

>INIT( ABC, 1, 2, 3 ) lv_ABC;

lolwut?
ABC lv_ABC(1, 2, 3);

#5
19:15, 19 апр. 2013

ах, это там класс.. ну ок тогда, формально смысл есть.

#6
19:45, 19 апр. 2013

gammaker
> Не надо делать эти крестокостыли.
ну во первых это не костыли, а во вторых почему нет?
gammaker
> Надо либо писать на "нормальном" языке
С++ нормальный язык, может ты не осилил?
gammaker
> либо довольствоваться тем, что есть в плюсах.
Прикинь я это и делаю.  Всё что я написал написано на ++ ))
gammaker
> Я на своём опыте убедился, что подобные костыли начинают глючить и приходится
> тратить своё время на то, чтобы от них избавиться.
Ну может дело в том, что пишешь именно костыли, а не нормальный код?
gammaker
> Зачем городить костыли и потом избавляться от них, если за это время можно
> написать нормальный код, который делает что-то полезное?
Я тоже не понимаю зачем.

#7
20:02, 19 апр. 2013

Хех, работает. Возьму на заметку. Спасибо.

#8
20:13, 19 апр. 2013

Chaos_Optima
> > Надо либо писать на "нормальном" языке
> С++ нормальный язык, может ты не осилил?
ты что, нормальные языки это gamemaker и unity3d :)

#9
20:23, 19 апр. 2013

>ну во первых это не костыли
Макросы - это костыли. Ладно бы они были где-нибудь в одном CPP файле и не мешались, но они захламляют пространство даже не имён, а токенов. Так же о костыльности говорят синтаксис и ограничения, которые несомненно возникают. Кстати, для завершённости статьи не хватает уточнить это:
>сразу скажу, что решение имеет ряд недостатков и подходит только для классов

>С++ нормальный язык, может ты не осилил?
Всё я осилил, что надо было. А сочетание "нормальный язык" на этом форуме уже сложившееся и означает просто другой язык, не C++.

>Прикинь я это и делаю. Всё что я написал написано на ++ ))
Проблема в том, что ты ожидаешь, что один раз класс написал, получил фичу и забыл. А потом начнут вылезать ограничения, использование фичи где-то не будет компилироваться с непонятными сообщениями об ошибках или вовсе станет багом. В конце-концов тебе надоест это терпеть и ты её выпилишь.

>Ну может дело в том, что пишешь именно костыли, а не нормальный код?
Мой код, который я писал и называл костылями, не костыльнее того, что у тебя в заметке. Теперь я стараюсь не писать такой код, который считаю костылём и другим не советую. Хотя это конечно их дело.

#10
20:56, 19 апр. 2013

Интересно конечно, но вряд ли стоит такой код писать имхо )

#11
21:15, 19 апр. 2013

gammaker
> Макросы - это костыли.
классы и функции тоже, давай писать на асм. Ну серьёзно что за бред.
gammaker
> Всё я осилил
Да ну, по мне так человек который говорит что макросы это костыли, явный неосилятор.
gammaker
> Проблема в том, что ты ожидаешь, что один раз класс написал, получил фичу и
> забыл. А потом начнут вылезать ограничения, использование фичи где-то не будет
> компилироваться с непонятными сообщениями об ошибках или вовсе станет багом. В
> конце-концов тебе надоест это терпеть и ты её выпилишь.
зачем её выпиливать? можно просто не использовать, это не та фича которая доставляет геморой, это фича которая помогает писать код чуть меньше, чуть быстрее, чуть удобнее. Если ты видишь явные проблемы в этой фиче может поделишься со мной?
gammaker
> Мой код, который я писал и называл костылями, не костыльнее того, что у тебя в
> заметке.
возможно ты не понял но этот код не является костылём, костылём можно назвать код который ты вынужден написать и вынужден использовать, для реализации задуманного. (поэтому это и называется костылём, потому что при переломе ты вынужден их использовать)
А это просто приятное дополнение которое может пригодится.
nes
> Интересно конечно, но вряд ли стоит такой код писать имхо )
можно узнать какова причина, что не нравится, что нужно поправить? Всегда рад конструктивной критике.

#12
1:12, 20 апр. 2013

Chaos_Optima
Скажем так, что без пол литра не разберешься )

#13
8:04, 20 апр. 2013

nes
А что разбираться то? Создается структура с полем необходимо типа. В конструторе класса вызывается конструктор этой структуры и присваиваются необходимые значения. Ну и кастуется к указанному типу. Малость запутано, но сложностей нет.

#14
10:03, 20 апр. 2013

gammaker
> Макросы - это костыли.
ты это разработчикам boost'a расскажи

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.