Скажи у меня
struct Foo
{
char a;
char b;
};
void bar(Foo foo);
Какой самый краткий способ инициализировать структуру и передать ее функции? В идеале я хотел бы написать что-то вроде
bar(Foo = {'a','b'});
Что если Фу был профсоюзом?
UPD: Мои искренние извинения, вопрос должен был быть связан только с C ++ 03. Кроме того, в этом конкретном случае следует избегать отхода от POD (код предназначен для встроенной системы, поэтому требуется более короткий байт-код). vonbrand, спасибо за ответ C ++ 11.
В C ++ 11 вы можете написать:
bar({'a', 'b'});
или же:
bar(Foo{'a', 'b'});
(см. Страуступа C ++ 11 FAQ.
G ++ — 4.8.2 принимает это без жалоб, только если вы даете это -std=c++11
, Clang ++ — 3.3 выдает ошибку, если -std=c++11
Вы можете добавить конструктор к вашей структуре. например
struct Foo
{
Foo(char a, char b) : a(a), b(b) {}
char a;
char b;
};
Тогда вы могли бы вызвать свою функцию
bar(Foo('a', 'b'));
Если бы это был союз, у вас могли бы быть разные конструкторы для разных типов объединения.