最近在项目中用到结构体Struct,发现自己写的结构体中如果用到第三方库中的时候,进行拷贝的时候就会出现Bug,百思不得其解啊!在查看项目中老大写的Code,发现自己写的Struct与老大写的Struct有很大区别。
在向老大请教后,才知道:
1)在定义Struct时,如果Struct中用到第三方库定义的变量或自己定义的变量,若要用到拷贝、赋值等操作(C++11的特性),则需要重写其构造函数、拷贝构造函数、“=”操作符函数等
struct DISPLAY_PACKAGE
{
HObject m_img;
std::vector<SFlawInfo> m_vErrRgn;
DISPLAY_PACKAGE()
{
m_vErrRgn.clear();
}
DISPLAY_PACKAGE(const DISPLAY_PACKAGE& other)
{
m_img = other.m_img;
m_vErrRgn = other.m_vErrRgn;
}
DISPLAY_PACKAGE& operator=(const DISPLAY_PACKAGE& other)
{
if (&other == this)
{
return *this;
}
m_img = other.m_img;
m_vErrRgn = other.m_vErrRgn;
return *this;
}
DISPLAY_PACKAGE(DISPLAY_PACKAGE&& other)
{
m_img = other.m_img;
m_vErrRgn = other.m_vErrRgn;
}
DISPLAY_PACKAGE& operator=(DISPLAY_PACKAGE&& other)
{
if (&other == this)
{
return *this;
}
m_img = other.m_img;
m_vErrRgn = other.m_vErrRgn;
return *this;
}
};