如何传递初始化对象

时间:2017-01-22 22:16:25

标签: c++11 object parameter-passing

目前,在我的代码中我有

vector_2 v1(1.0,2.0);
Frame.Draw( v1(2.0f,1.0f) );

其中vector_2是一个带有2个双精度(坐标)的构造函数的结构。 Frame是某个类的实例,其函数将vector_2作为参数。这编译得很好,就像我想要的那样。

但是,当我在函数调用之前直接尝试不初始化向量时,例如:

Frame.Draw( vector_2 v1(2.0f,1.0f) );

编译器失败并显示错误消息:v1之前的预期primary-expression。我希望在函数调用中直接初始化。

我想知道这在C ++中是否可行,我可能不知道正确的语法。

1 个答案:

答案 0 :(得分:0)

您正在呼叫中声明变量:

Frame.Draw( vector_2 v1(2.0f,1.0f) );

你必须这样做,而不是声明一个变量直接在Frame.Draw中声明一个临时:

Frame.Draw( vector_2{2.0f, 1.0f});

Frame.Draw( vector_2(2.0f, 1.0f));

取决于你如何申报的东西。小心C ++中的初始化,这是非常令人困惑的,因为有些问题和一般工作看看这里: