结构的匿名(?)初始化作为C 03中的参数传递
Anonymous (?) initialization of a struct passed as an argument in C++03
说,我有
struct Foo
{
char a;
char b;
};
void bar(Foo foo);
初始化结构并将其传递给功能的最简洁的方法是什么?理想情况下,我想写
之类的东西bar(Foo = {'a','b'});
如果Foo是工会怎么办?
upd:我真诚地抱歉,这个问题应该仅与C 03有关。同样,在这种特殊情况下,应避免远离POD(该代码适用于嵌入式系统,追求ergo较短的字节码)。vonbrand,感谢C 11答案。
在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
您可以在结构中添加一个构造函数。例如
struct Foo
{
Foo(char a, char b) : a(a), b(b) {}
char a;
char b;
};
然后您可以调用您的功能
bar(Foo('a', 'b'));
如果是工会,您可以为不同类型的工会拥有不同的构造函数。
相关文章:
- 如何在方法中传递结构参数
- C++:如何做一个链表,结构作为参数传递?
- 是否可以将结构的成员变量作为参数传递
- 在模板方法 c++ 中传递结构参数
- 将未知结构(在运行时)作为模板参数传递
- 将模板参数传递到内部结构时出错
- POSIX线程,将多个参数传递给具有结构的函数
- 如果结构作为递归函数中的参数传递,如何初始化结构的成员变量
- 如何将参数从结构正确传递到函数
- C++,将结构特征作为参数传递到函数中
- 结构的匿名(?)初始化作为C 03中的参数传递
- C++将结构的数组作为函数参数传递
- 将泛型结构作为接口中的参数传递
- 参数传递的不同矩阵结构
- C++ 将结构函数作为继承结构中函数的参数传递
- 在 C++11 中将结构作为输出参数传递
- 如何使用 boost::bind 将类/结构实例作为参数传递给回调
- 解析结构并作为指针参数传递
- 如何将结构的成员数组作为参数传递给函数
- C++将结构成员作为参数传递