说,我有
struct Foo
{
char a;
char b;
};
void bar(Foo foo);
初始化结构并将其传递给函数的最简洁方法是什么?理想情况下,我想写一些类似
的内容bar(Foo = {'a','b'});
如果Foo是一个工会怎么办?
UPD:我真诚地道歉,这个问题应该只与C ++ 03有关。此外,在这种特殊情况下,应避免远离POD(代码用于嵌入式系统,寻求更短的字节码)。 vonbrand,感谢C ++ 11的回答。答案 0 :(得分:4)
在C ++ 11中,你可以写:
bar({'a', 'b'});
或:
bar(Foo{'a', 'b'});
(参见Stroustup的C++11 FAQ。
g ++ - 4.8.2只有在你给它-std=c++11
时才接受这个没有投诉,clang ++ - 3.3会给出错误,除非-std=c++11
答案 1 :(得分:1)
您可以在结构中添加构造函数。 e.g。
struct Foo
{
Foo(char a, char b) : a(a), b(b) {}
char a;
char b;
};
然后你可以调用你的函数
bar(Foo('a', 'b'));
如果它是一个联合,你可以为不同类型的联合使用不同的构造函数。