在C++中,我构造了一个基本类,如下所示:
class MyList {
protected:
list<MyOtherClass<int>> nodes;
int size;
...
}但是,稍后在MyList中,当我尝试向节点列表中插入一个值时,例如:
MyOtherClass<int>* temp = new MyOtherClass<int>(size);
nodes.push_back(temp);我收到一个编译错误说
cannot convert argument 1 from 'MyOtherClass<int> *' to 'MyOtherClass<int> &&'我绞尽脑汁想办法解决它。有什么想法?
发布于 2018-03-18 21:22:18
那是因为这种类型不兼容。您的列表是list<MyOtherClass<int>>类型,temp是MyOtherClass<int>*类型。试试这个:
MyOtherClass<int> temp(size);
nodes.push_back(temp);或者这个:
class MyList {
protected:
list<MyOtherClass<int> *> nodes;
int size;
...
}发布于 2018-03-18 21:29:13
但是,稍后在MyList中,当我尝试向节点列表中插入一个值时,例如: MyOtherClass* temp =新的MyOtherClass(大小);nodes.push_back(temp); 我收到一个编译错误
这是因为您没有插入MyOtherClass<int>值。您正在插入指向不必要的动态分配的MyOtherClass<int>值的指针。别干那事。
只需以正常的方式创建新对象:
MyOtherClass<int> temp(size);
nodes.push_back(temp);甚至:
nodes.emplace_back(size);通常(除非您正在编写一些库代码或分配器)在编写new时,您已经犯了一个错误,或者暂时忘记了您用的是哪种语言。)是的,我知道网上有一百万个“教程”告诉你如何使用new的东西。他们错了。
https://stackoverflow.com/questions/49352910
复制相似问题