【C++】Struct的定義

 最近在項目中用到結構體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;
	}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章