【C++】Structの定義

4778 ワード

最近はプロジェクトで構造体Structを使っていますが、自分が書いた構造体の中でサードパーティ製ライブラリに使っていた場合、コピーをしていたときにバグが出てくることに気づき、理解できないでしょう.項目の大文字のコードを見ると、自分が書いた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;
	}
};