C++ 无法从类型*转换为类型&&;

C++ 无法从类型*转换为类型&&;,c++,stl,c++11,rvalue-reference,C++,Stl,C++11,Rvalue Reference,我有一个简单的类,我使用std::vector来包含该类的所有实例。然而,当我这样做时: std::vector<MyType> v; MyType m(1, 2, 3); v.push_back(m); 我得到这个错误: error C2664: 'void std::vector<_Ty>::push_back(_Ty &&)' : cannot convert parameter 1 from 'MyType *' to 'MyType &

我有一个简单的类,我使用std::vector来包含该类的所有实例。然而,当我这样做时:

std::vector<MyType> v;
MyType m(1, 2, 3);
v.push_back(m);
我得到这个错误:

error C2664: 'void std::vector<_Ty>::push_back(_Ty &&)' : cannot convert parameter 1 from 'MyType *' to 'MyType &&'
我不明白出了什么问题


编辑:我的原始代码(第一段代码)有效。不管出于什么原因,我不得不重新构建解决方案,然后它编译得很好。

在您的代码中,
MyType
是一个类型,而
m
是一个对象,因此
新的m(1,2,3)
甚至没有意义

写:

v.push_back(MyType(1, 2, 3)); //without new
您也可以使用as,而不是
推回


emplace\u back
更可取。

为什么我问题中的第一个代码片段不起作用,这和你说的是一样的。@RiceNewman:正如我所说,它不会产生错误,而且会起作用。如果它给了你错误,你一定是在做别的事情。它还在给我错误。这一切都是从我输入问题的第一个代码片段开始的,这相当于你告诉我要使用的……我想我会尝试重新构建解决方案?@RiceNewman:再试一次。另外,检查是否完全相同。或者在问题中发布完整的代码,或者在ideone.com上发布
class MyType
{
public:
  int a;
  int b;
  float c;

MyType(int A, int B, float C)
{
    a = A;
    b = B;
    c = C;
}
};
v.push_back(MyType(1, 2, 3)); //without new
v.emplace_back(1,2,3); //note there is no `MyType` now