Pan*_*nda -1 c++ parameters object
我知道有一个像这样初始化对象的简写:
Point p = {0, 0} // x = 0, y = 0
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否可以使用它来创建一个ad-hoc对象作为函数调用的参数,而不首先将其存储在变量中?这是一个说明性的例子,展示了我是如何尝试这样做的,希望能够更好地了解我正在尝试做的事情:
Point p = addPoints(&{1, 2}, &{3, 4}, &{5, 6});
Run Code Online (Sandbox Code Playgroud)
您的解决方案无法运作.你不能拿一个临时的地址,这{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});
Run Code Online (Sandbox Code Playgroud)