хочу [Record] как в Nemerle
От: jyuyjiyuijyu  
Дата: 13.01.14 16:23
Оценка: -1
Всем привет

в немерле есть такая фишечка [Record] которая генерирует конструктор

[Record]
class Person {
  public name : string;
  public age : int;
  public sex : bool;
}



есть что нибудь подобное для плюсов ?


спасибо
Re: хочу [Record] как в Nemerle
От: niXman Ниоткуда https://github.com/niXman
Дата: 13.01.14 16:24
Оценка:
тебе что, структуру задекларить нужно?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: хочу [Record] как в Nemerle
От: jyuyjiyuijyu  
Дата: 13.01.14 16:27
Оценка:
Здравствуйте, niXman, Вы писали:

X>тебе что, структуру задекларить нужно?


нет хочу чтоб он мне констуктор с тремя параметрами сгенерировал для инициализации членов
чтоб вручную не писать
Re[3]: хочу [Record] как в Nemerle
От: Alexander G Украина  
Дата: 13.01.14 16:35
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>нет хочу чтоб он мне констуктор с тремя параметрами сгенерировал для инициализации членов

J>чтоб вручную не писать

Есть Uniform initialization
Русский военный корабль идёт ко дну!
Re[3]: хочу [Record] как в Nemerle
От: watchmaker  
Дата: 13.01.14 16:37
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>нет хочу чтоб он мне констуктор с тремя параметрами сгенерировал для инициализации членов

J>чтоб вручную не писать

А списков инициализации тебе не достаточно?
Person p = {"username", -1, true};
Re[4]: хочу [Record] как в Nemerle
От: jyuyjiyuijyu  
Дата: 13.01.14 16:44
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>А списков инициализации тебе не достаточно?
Person p = {"username", -1, true};


а как это будет для объекта в куче ????

auto p = new Person {"username", -1, true};


так ??? что то нифига не работает
Re[5]: хочу [Record] как в Nemerle
От: watchmaker  
Дата: 13.01.14 16:49
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:


J>а как это будет для объекта в куче ????


J>auto p = new Person {"username", -1, true};


J>так ???

Да, так. Но для new это работает только с C++11.
Re[6]: хочу [Record] как в Nemerle
От: jyuyjiyuijyu  
Дата: 13.01.14 17:00
Оценка: :)
Здравствуйте, watchmaker, Вы писали:

W>Да, так. Но для new это работает только с C++11.


у меня компилятор самый первый который стал поддерживать auto и прочие няшки из C++11 (Microsoft (R) C/C++ Optimizing Compiler Version 16.00.40219.01) но на эту конструкцию он ругается...

а интересно там в будущем такая инициализация и для C++/CLI работает ?

тоесть можно написать что то вроде

ref struct data
{
    int field1;
    int field2;
    int field3;
};

auto p = gcnew data { /* */ };


??
Re: хочу [Record] как в Nemerle
От: Abyx Россия  
Дата: 13.01.14 18:26
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>в немерле есть такая фишечка [Record] которая генерирует конструктор


какой конструктор? и нафига? агрегаты можно списком инициализации инициализировать.
In Zen We Trust
Re[2]: хочу [Record] как в Nemerle
От: jyuyjiyuijyu  
Дата: 13.01.14 19:08
Оценка: -1 :)
Здравствуйте, Abyx, Вы писали:

A>какой конструктор? и нафига? агрегаты можно списком инициализации инициализировать.


у меня компилятор cl 16.0 (не самый старый) который не умеет это компилировать

auto p = new data { /* */ };


поэтому я и хочу [Record] как в немерле
Re[3]: хочу [Record] как в Nemerle
От: Abyx Россия  
Дата: 13.01.14 19:31
Оценка: :))) :)
Здравствуйте, jyuyjiyuijyu, Вы писали:

A>>какой конструктор? и нафига? агрегаты можно списком инициализации инициализировать.


J>у меня компилятор cl 16.0 (не самый старый) который не умеет это компилировать


J>
J>auto p = new data { /* */ };
J>


J>поэтому я и хочу [Record] как в немерле


еще раз, в С++ есть вся необходимая функциональность.
если твой говнокомпилятор не полностью поддерживает С++, это твои проблемы.
напиши письмо в спортлотопроизводителю твоего компилятора чтобы они добавили поддержку
In Zen We Trust
Re[4]: хочу [Record] как в Nemerle
От: niXman Ниоткуда https://github.com/niXman
Дата: 13.01.14 20:20
Оценка: :)
Здравствуйте, Abyx, Вы писали:

A>если твой говнокомпилятор не полностью поддерживает С++, это твои проблемы.

A>напиши письмо в спортлотопроизводителю твоего компилятора чтобы они добавили поддержку
правильно!
или переходи на мингв
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: хочу [Record] как в Nemerle
От: _NN_ www.nemerleweb.com
Дата: 14.01.14 07:37
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>есть что нибудь подобное для плюсов ?

А синтаксис какой должен быть ?
В принципе макросом можно сделать генерацию конструктора через Boost.PP и будет
CLASS(
 Person,
 ((string)(name))
 ((int)(age))
 ((bool)(sex))
)


Пару скобок можно будет сократить , смотря что нужно будет.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: хочу [Record] как в Nemerle
От: niXman Ниоткуда https://github.com/niXman
Дата: 14.01.14 08:22
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>В принципе макросом можно сделать генерацию конструктора через Boost.PP и будет

_NN>
_NN>CLASS(
_NN> Person,
_NN> ((string)(name))
_NN> ((int)(age))
_NN> ((bool)(sex))
_NN>)
_NN>


или такой:
CLASS(
 Person,
 ((string,name))
 ((int,age))
 ((bool,sex))
)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: хочу [Record] как в Nemerle
От: niXman Ниоткуда https://github.com/niXman
Дата: 14.01.14 08:24
Оценка:
или использовать готовое.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: хочу [Record] как в Nemerle
От: niXman Ниоткуда https://github.com/niXman
Дата: 14.01.14 08:26
Оценка:
или это.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: хочу [Record] как в Nemerle
От: jyuyjiyuijyu  
Дата: 14.01.14 09:44
Оценка:
Здравствуйте, _NN_ niXman, Вы писали:

да такой синтаксис меня устраивает и в принципе boost генерирует именно то что я хочу конструктор для инициализации членов в порядке их объявления

жаль только что таким образом нельзя ref struct объявить а у меня как раз текущий проект на C++/CLI

BOOST_FUSION_DEFINE_STRUCT(
    , employee,
    (std::string, name)
    (int, age))
Re[3]: хочу [Record] как в Nemerle
От: _NN_ www.nemerleweb.com
Дата: 14.01.14 10:24
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Здравствуйте, _NN_ niXman, Вы писали:


J>да такой синтаксис меня устраивает и в принципе boost генерирует именно то что я хочу конструктор для инициализации членов в порядке их объявления


J>жаль только что таким образом нельзя ref struct объявить а у меня как раз текущий проект на C++/CLI


Можно добавить, код открыт.
Вот так определяется структура:
#define BOOST_FUSION_DEFINE_STRUCT_IMPL(                                        \
    NAMESPACE_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE)                  \
                                                                                \
    BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ)         \
                                                                                \
    struct NAME                                                                 \
    {                                                                           \
        typedef NAME self_type;                                                 \


Добавляем свой макрос и делаем ref struct NAME.
Далее надо починить места где используется ссылки , и заменить на дескрипторы '^'.

P.S.
Сколько можно насиловать C++/CLI ?
Можно было уже перейти на
  сами знаете что
Nemerle
и радоваться жизни.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: хочу [Record] как в Nemerle
От: Vzhyk  
Дата: 14.01.14 10:28
Оценка:
1/14/2014 1:24 PM, _NN_ пишет:

> Сколько можно насиловать C++/CLI ?

> Можно было уже перейти на
  сами знаете что
Nemerle
и

> радоваться жизни.
+100 за это.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: хочу [Record] как в Nemerle
От: jyuyjiyuijyu  
Дата: 14.01.14 12:10
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Сколько можно насиловать C++/CLI ?


пока у меня еще не угасла любовь к C++/CLI )
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.