gpt4 book ai didi

c++ - 无法从 Type* 转换为 Type&&

转载 作者:行者123 更新时间:2023-11-30 03:02:21 25 4
gpt4 key购买 nike

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

std::vector<MyType> v;
MyType m(1, 2, 3);
v.push_back(m);

或者如果我这样做:

v.push_back(new MyType(1, 2, 3);

我收到这个错误:

error C2664: 'void std::vector<_Ty>::push_back(_Ty &&)' : cannot convert parameter 1 from 'MyType *' to 'MyType &&'

如果它很重要,这里是我的 MyType 代码:

class MyType
{
public:
int a;
int b;
float c;

MyType(int A, int B, float C)
{
a = A;
b = B;
c = C;
}
};

我不明白出了什么问题。

编辑:我的原始代码(第一段)有效。无论出于何种原因,我不得不重建解决方案,然后它编译得很好。

最佳答案

在你的代码中,MyType 是一个类型,而 m 是一个对象,所以 new m(1,2,3) 不是甚至说得通。

写:

v.push_back(MyType(1, 2, 3)); //without new

除了 push_back,您还可以使用 emplace_back作为:

v.emplace_back(1,2,3); //note there is no `MyType` now

emplace_back 更可取。

关于c++ - 无法从 Type* 转换为 Type&&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com