第3行(vector :: push_back)引发此错误

No matching constructor for initialization of 'CCoordinate'


当试图编译这个

main(){
     [...]
1    vector<CCoordinate> coordinates;
2    CCoordinate * a = new CCoordinate();
3    coordinates.push_back(*a);
     [...]
}


但是CCoordinate类确实具有公共构造函数

public:
    CCoordinate(float X = 0, float Y = 0);
    CCoordinate(CCoordinate& orig);
    ~CCoordinate();


我想念什么?在vector :: pushback(* object)中解引用对象适用于图元,例如像整数

问候
克里斯多夫

最佳答案

复制构造函数应通过const引用获取参数:

CCoordinate(const CCoordinate& orig);


这将允许从临时对象构造新对象。

您也不需要任何动态分配,只需编写

coordinates.push_back(CCoordinate());

关于c++ - vector “没有匹配的构造函数来初始化”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20439950/

10-11 19:06