目前,在我的代码中我有
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 ++中是否可行,我可能不知道正确的语法。
答案 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 ++中的初始化,这是非常令人困惑的,因为有些问题和一般工作看看这里: