vector<cbitmap> 我要往里面加一个数据,用.push_back(cbitmap) 不行 为什么

2025-02-23 20:41:28
推荐回答(3个)
回答1:

vector的push_back 操作会调用CBITMAP的复制构造函数! 而CBITMAP是从CObject派生,没有实现其复制构造函数。
具体点:push_back 的实现:
push_back(val)

_vec[last] = val; ===>这里有个复制构造函数调用,!

而CObject类(MFC源码)里只声明了
private:
CObject(COjbet& right);
CObject& operator = (COjbet& right);

这两个函数不单纯声明为private,并且没有实现,其意义就是方式人误使用,

这个问题的解决: 你用vector

回答2:

这个应当是push_back(对象名)而不是push_back(类型名)啊

回答3:

前面加作用域了么?