Действительно ли это возможно?
Я знаю, что можно инициализировать структуры с помощью синтаксиса списка.
IE
struct Foo f = { a, b, c};
return f;
возможное должно сделать это в одной строке, как Вы были бы с классами и конструкторами?
Спасибо
Если вы хотите, чтобы ваша структура оставалась POD , используйте функцию, которая ее создает:
Foo make_foo(int a, int b, int c) {
Foo f = { a, b, c };
return f;
}
Foo test() {
return make_foo(1, 2, 3);
}
В C ++ 0x равномерная инициализация устраняет необходимость в этой функции:
Foo test() {
return Foo{1, 2, 3};
// or just:
return {1, 2, 3};
}
Создайте конструктор для структуры (как класс) и просто выполните
return Foo(a,b,c);
Изменить : просто для пояснения: структуры в C ++ похожи на классы с той незначительной разницей, что их разрешение доступа по умолчанию является общедоступным (а не частным, как в классе). Поэтому вы можете создать конструктор очень просто, например:
struct Foo {
int a;
Foo(int value) : a(value) {}
};