#pragma once class Noncopyable { protected: Noncopyable() {} ~Noncopyable() {} private: Noncopyable(const Noncopyable&); const Noncopyable& operator = (const Noncopyable&); }; //#ifdef _MSC_VER //#pragma warning(disable:4511) // º¹»ç »ý¼ºÀÚ¸¦ »ý¼ºÇÏÁö ¸øÇß½À´Ï´Ù. //#pragma warning(disable:4512) // ÄÄÆÄÀÏ·¯¿¡¼­ ÁÖ¾îÁø Ŭ·¡½º¿¡ ´ëÇÑ ´ëÀÔ ¿¬»êÀÚ¸¦ »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù. //#endif /// »çÁ¤»ó NoncopyableÀ» ¹Ù·Î »ó¼Ó¹ÞÁö ¸øÇϴ Ŭ·¡½º¿¡¼­, /// º¹»ç »ý¼ºÀÚ ¹× ¿¬»êÀÚ¸¦ ¸·±â À§ÇÑ ¸ÅÅ©·Î #define DECLARE_NONCOPYABLE(NAME) private: \ NAME(const NAME&) {} \ NAME& operator = (const NAME&) { return *this; }