我知道这是一个初始化对象的简写:
Point p = {0, 0} // x = 0, y = 0
我的问题是,是否可以使用它来创建一个ad-hoc对象作为函数调用的参数,而不首先将其存储在变量中?这是一个说明性的例子,展示了我如何尝试这样做,希望能够更好地了解我尝试做的事情:
Point p = addPoints(&{1, 2}, &{3, 4}, &{5, 6});
答案 0 :(得分:5)
您的解决方案无效。你不能取一个临时的地址,{1, 2}
会生成(如果它知道首先要生成什么类型)。
您使用的语法表明addPoints
的参数类型为Point*
(或者可能是const Point *
) - 指向Point
的指针。如果是这种情况,可以假设该函数实际上将地址存储在某个地方,所以如果临时传递地址将是一个坏主意。
如果您知道该功能实际上并不存储该地址,并且它在您的控制之下,您可以将其更改为采用const Point &
(或仅仅是Point
)参数。然后,您可以正常使用统一初始化语法(假设C ++ 11):
Point addPoints(const Point &p1, const Point &p2, const Point &p3);
Point p = addPoints({1, 2}, {3, 4}, {5, 6});