最近在項目中用到結構體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;
}
};