Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以在函数调用中初始化对象参数?_C++_Object_Parameters - Fatal编程技术网

C++ 是否可以在函数调用中初始化对象参数?

C++ 是否可以在函数调用中初始化对象参数?,c++,object,parameters,C++,Object,Parameters,我知道有一种用于初始化对象的简写方法,如下所示: Point p = {0, 0} // x = 0, y = 0 我的问题是,是否可以使用它创建一个特殊对象作为函数调用的参数,而不首先将其存储在变量中?下面是一个说明性示例,展示了我是如何尝试这样做的,希望它能更好地说明我正在尝试做什么: Point p = addPoints(&{1, 2}, &{3, 4}, &{5, 6}); 你的解决方案行不通。您不能获取临时文件的地址,{1,2}将生成临时文件(如果它首先知

我知道有一种用于初始化对象的简写方法,如下所示:

Point p = {0, 0} // x = 0, y = 0
我的问题是,是否可以使用它创建一个特殊对象作为函数调用的参数,而不首先将其存储在变量中?下面是一个说明性示例,展示了我是如何尝试这样做的,希望它能更好地说明我正在尝试做什么:

Point p = addPoints(&{1, 2}, &{3, 4}, &{5, 6});

你的解决方案行不通。您不能获取临时文件的地址,
{1,2}
将生成临时文件(如果它首先知道要生成什么类型)

您使用的语法表明,
addPoints
的参数类型为
Point*
(或者可能是
const Point*
)-指向
Point
的指针。如果是这种情况,我们可以假设函数实际上将地址存储在某个地方,因此如果是临时地址,那么传递地址将是一个坏主意

如果您知道该函数实际上不存储地址,并且它在您的控制下,您可以将其更改为使用
常量点&
(或仅使用普通
)参数。然后,您可以正常使用统一初始化语法(假设C++11):


你能出示
addPoints()
的签名吗?谢谢,这回答了我的问题。我没有使用C++11,所以这可以解释为什么它不工作。
Point addPoints(const Point &p1, const Point &p2, const Point &p3);

Point p = addPoints({1, 2}, {3, 4}, {5, 6});