implement explicit copying instead of forbidding it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -411,12 +411,29 @@ inline void wxCheckCast(void *ptr)
|
|||||||
class WXDLLEXPORT wxObject
|
class WXDLLEXPORT wxObject
|
||||||
{
|
{
|
||||||
DECLARE_ABSTRACT_CLASS(wxObject)
|
DECLARE_ABSTRACT_CLASS(wxObject)
|
||||||
DECLARE_NO_COPY_CLASS(wxObject)
|
|
||||||
|
private:
|
||||||
|
void InitFrom(const wxObject& other);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxObject() { m_refData = NULL; }
|
wxObject() { m_refData = NULL; }
|
||||||
virtual ~wxObject() { UnRef(); }
|
virtual ~wxObject() { UnRef(); }
|
||||||
|
|
||||||
|
wxObject(const wxObject& other)
|
||||||
|
{
|
||||||
|
InitFrom(other);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxObject& operator=(const wxObject& other)
|
||||||
|
{
|
||||||
|
if ( this != &other )
|
||||||
|
{
|
||||||
|
UnRef();
|
||||||
|
InitFrom(other);
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
bool IsKindOf(wxClassInfo *info) const;
|
bool IsKindOf(wxClassInfo *info) const;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -82,7 +82,6 @@ void wxObject::Dump(wxSTD ostream& str)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WX_WANT_NEW_SIZET_WXCHAR_INT
|
#ifdef _WX_WANT_NEW_SIZET_WXCHAR_INT
|
||||||
void *wxObject::operator new ( size_t size, const wxChar *fileName, int lineNum )
|
void *wxObject::operator new ( size_t size, const wxChar *fileName, int lineNum )
|
||||||
{
|
{
|
||||||
@@ -247,9 +246,18 @@ wxObject *wxCreateDynamicObject(const wxChar *name)
|
|||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxClassInfo
|
// wxObject
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Initialize ref data from another object (needed for copy constructor and
|
||||||
|
// assignment operator)
|
||||||
|
void wxObject::InitFrom(const wxObject& other)
|
||||||
|
{
|
||||||
|
m_refData = other.m_refData;
|
||||||
|
if ( m_refData )
|
||||||
|
m_refData->m_count++;
|
||||||
|
}
|
||||||
|
|
||||||
void wxObject::Ref(const wxObject& clone)
|
void wxObject::Ref(const wxObject& clone)
|
||||||
{
|
{
|
||||||
#if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT
|
#if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT
|
||||||
|
Reference in New Issue
Block a user