C++11 如何传递已初始化的对象

C++11 如何传递已初始化的对象,c++11,object,parameter-passing,C++11,Object,Parameter Passing,目前,在我的代码中 vector_2 v1(1.0,2.0); Frame.Draw( v1(2.0f,1.0f) ); 其中vector_2是一个结构,其构造函数采用2个双精度(坐标)。Frame是某个类的实例,其函数以向量_2为参数。这编译得很好,符合我的要求 但是,当我在函数调用之前直接尝试而不初始化向量时,例如: Frame.Draw( vector_2 v1(2.0f,1.0f) ); 编译器失败,并显示错误消息:v1之前应为主表达式。我希望在函数调用中直接初始化 我想知道C++中

目前,在我的代码中

vector_2 v1(1.0,2.0);
Frame.Draw( v1(2.0f,1.0f) );
其中vector_2是一个结构,其构造函数采用2个双精度(坐标)。Frame是某个类的实例,其函数以向量_2为参数。这编译得很好,符合我的要求

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

Frame.Draw( vector_2 v1(2.0f,1.0f) );
编译器失败,并显示错误消息:v1之前应为主表达式。我希望在函数调用中直接初始化


<>我想知道C++中是否有可能,我可能不知道正确的语法。< /p> 你在一个调用中声明变量:< /p>
Frame.Draw( vector_2 v1(2.0f,1.0f) );
您必须这样做,它不是声明变量而是直接在框架内声明临时变量。绘制:

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

取决于你如何声明事情。注意C++中的初始化,这是相当混乱的,对于一些Gojas和一般工作,请看这里:


Frame.Draw({2.0f,1.0f})这是有效的。谢谢为什么是花括号?这样我才能理解我的错误。当直接在构造函数中初始化对象时,这是否也是可能的,例如someClass::someClass():SomeOtherObject({1.0,2.0f}){…}它直接初始化结构。可以将其视为传递参数的一种方式,这些参数可用于构造函数调用所需的
vector_2
。也可以使用
Frame.Draw(vector_2(2.0f,1.0f));这与第二个示例相同,只是没有
v1
。不过,这比统一初始化(AndyG使用的)更加冗长。
Frame.Draw( vector_2(2.0f, 1.0f));