第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)中取消引用对象适用于基元,例如像整数一样。
此致 克里斯托弗
答案 0 :(得分:4)
复制构造函数应该通过const
引用获取参数:
CCoordinate(const CCoordinate& orig);
这将允许来自临时对象的新对象的构造函数。
您也不需要任何动态分配,只需编写
即可coordinates.push_back(CCoordinate());
答案 1 :(得分:0)
这是错误,因为没有默认构造函数。请定义CCoordinate
的默认构造函数。添加默认构造函数后,请从此参数化构造函数中删除默认参数。否则,在某些情况下,它会给你一个模糊的函数错误。
在默认构造函数中,使用0初始化它。