【发布时间】:2013-12-12 07:12:39
【问题描述】:
我有一个函数返回一个由两个整数组成的命名结构,如下所示:
struct myStruct {int i; int j;};
myStruct myFunction(int myArg){
switch (myArg) {
case 0: return {1,2};
case 1: return {2,3};
default: return {4,5};
}
}
我希望能够从我的 switch 语句中返回适当初始化的结构。 我可以通过声明一个命名结构并初始化它,然后返回命名结构来做到这一点, 但是,如果我可以让编译器像上面的示例那样为我创建匿名结构,那会更干净——它不会编译。 这可以(合法地)工作吗?或者实现我的目标的最干净的方法是什么?
【问题讨论】:
-
如果你的编译器支持 C++11,应该可以。
-
我真的不明白你为什么不想使用命名结构o.O你将如何访问返回的数据?
-
你想要
std::pair吗? -
您发布的代码是合法的;你得到编译器错误吗?如果是这样,请发布这些错误以及编译器版本。
-
您可以简单地启用 C++11 或编写函数 make_myStruct()。
标签: c++ struct return anonymous