Re[4]: Инициализация.
От: Анатолий Широков СССР  
Дата: 16.09.04 14:28
Оценка: 1 (1)
__>Ну тогда кроме функции действительно нет ничего лучше.
__>Можно это улучшить, сделав в виде макроса если таких структур много.

Ага, что-то в этом роде выйдет:

template<typename T, typename P1>
T initializer(P1 p1)
{
    T tmp = {p1};
    return tmp;
}

template<typename T, typename P1, typename P2>
T initializer(P1 p1, P2 p2)
{
    T tmp = {p1, p2};
    return tmp;
}

template<typename T, typename P1, typename P2, typename P3>
T initializer(P1 p1, P2 p2, P3 p3)
{
    T tmp = {p1, p2, p3};
    return tmp;
}

struct foo {int a; const char *b;};
struct boo {int a; double b;};

struct B 
{
    B() : f(initializer<foo>(1, "test")), b(initializer<boo>(10, 1))
    {
    }
    foo f;
    boo b;
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.