我创建了一个向量A,并希望通过以下方法将其复制到另一个类中的向量B,这样做是否正确?向量A可能会被销毁!我在Google上搜索了一下,但没有找到好的解决方案和有意义的解释。谢谢大家。
void StateInit(vector<CButton*> listBtn)
{
_m_pListBtn = listBtn;
};
是的和不是,您正在通过值传递向量:
void StateInit(vector<CButton*> listBtn)
{
_m_pListBtn = listBtn;
};
class cloneFunctor {
public:
T* operator() (T* a) {
return a->clone();
}
}
void StateInit(vector<CButton*> listBtn)
{
transform(listBtn.begin(), listBtn.end(), back_inserter(_m_pListBtn), cloneFunctor());
};
如果你的意图不是克隆它而是分享指针,你应该将向量作为指针或引用传递:
void StateInit(const vector<CButton*>& listBtn)
{
_m_pListBtn = listBtn;
};
void StateInit(const vector<CButton*>& listBtn)
这样的函数。现在的写法会将向量复制两次,一次是复制到listBtn
,另一次是复制到_m_pListBtn
。这样做没有意义。 - john