这可能吗?
我知道您可以使用列表语法初始化结构。
IE
struct Foo f = { a, b, c};
return f;
是否可以像在类和构造函数中那样在一行中执行此操作?
由于
答案 0 :(得分:23)
如果您希望结构保持为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 uniform initialization不再需要该函数:
Foo test() {
return Foo{1, 2, 3};
// or just:
return {1, 2, 3};
}
答案 1 :(得分:14)
为struct创建一个构造函数(就像一个类),然后执行
return Foo(a,b,c);
编辑:只是为了澄清:C ++中的结构就像类一样,它们的默认访问权限是公共的(而不是类中的私有)。因此,您可以非常简单地创建构造函数,例如:
struct Foo {
int a;
Foo(int value) : a(value) {}
};