From 036519f3f679efb7fd8c7e2cca33a396017e2c79 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 28 Nov 2013 16:06:01 +0100 Subject: [PATCH] Fixed potential ambiguity bug Ambiguity in assignment operator with UniquePointer and UniqueArray --- Code/Misc/Misc.vcxproj | 11 ++++++++--- Code/Misc/Misc.vcxproj.filters | 23 +++++++++++++++++++---- Code/Misc/Utilities-Impl.h | 21 +++++---------------- Code/Misc/Utilities.h | 26 ++++++++------------------ 4 files changed, 40 insertions(+), 41 deletions(-) diff --git a/Code/Misc/Misc.vcxproj b/Code/Misc/Misc.vcxproj index e2947725..c41ed349 100644 --- a/Code/Misc/Misc.vcxproj +++ b/Code/Misc/Misc.vcxproj @@ -148,15 +148,20 @@ - + + + - - + + + + + diff --git a/Code/Misc/Misc.vcxproj.filters b/Code/Misc/Misc.vcxproj.filters index 6eae993b..3f2d3b40 100644 --- a/Code/Misc/Misc.vcxproj.filters +++ b/Code/Misc/Misc.vcxproj.filters @@ -27,6 +27,12 @@ Source Files + + Source Files + + + Source Files + Source Files @@ -41,14 +47,23 @@ Header Files - - Header Files - - + Header Files Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + \ No newline at end of file diff --git a/Code/Misc/Utilities-Impl.h b/Code/Misc/Utilities-Impl.h index 50d13652..655f06c5 100644 --- a/Code/Misc/Utilities-Impl.h +++ b/Code/Misc/Utilities-Impl.h @@ -1,7 +1,11 @@ ///////////////////////////////////////////////////////////////////// // Inline and template implementations for // the Utility Collection of Miscellanious Handy Functions -// © Dan Andersson 2013 +// +// Created 2013 by Dan Andersson +// Edited 2013 by +// * Dan Andersson +// * Dennis Andersen ///////////////////////////////////////////////////////////////////// #ifndef UTILITIES_INLINE_IMPL_H @@ -51,14 +55,6 @@ namespace Utility SafeDeleteInstance( this->ownedInstance ); } - template - UniquePointer & UniquePointer::operator = ( Type *assignedInstance ) - { - SafeDeleteInstance( this->ownedInstance ); - this->ownedInstance = assignedInstance; - return *this; - } - template UniquePointer & UniquePointer::operator = ( const UniquePointer &donor ) { @@ -144,13 +140,6 @@ namespace Utility SafeDeleteArray( this->ownedArray ); } - template - UniqueArray & UniqueArray::operator = ( Type assignedArray[] ) - { - SafeDeleteArray( this->ownedArray ); - this->ownedArray = assignedArray; - } - template UniqueArray & UniqueArray::operator = ( const UniqueArray &donor ) { diff --git a/Code/Misc/Utilities.h b/Code/Misc/Utilities.h index cdceb894..abda0af5 100644 --- a/Code/Misc/Utilities.h +++ b/Code/Misc/Utilities.h @@ -1,7 +1,11 @@ -//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//! +///////////////////////////////////////////////////////////////////// // Utility Collection of Miscellanious Handy Functions -// © Dan Andersson 2013 -//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//! +// +// Created 2013 by Dan Andersson +// Edited 2013 by +// * Dan Andersson +// * Dennis Andersen +///////////////////////////////////////////////////////////////////// #ifndef UTILITIES_H #define UTILITIES_H @@ -27,12 +31,9 @@ namespace Utility template struct UniquePointer { public: - //! Creates an empty UniquePointer. - //UniquePointer(); - //! Assigns assignedInstance ownership to this UniquePonter, old owned instance will be deleted. //! If NULL is assigned is equivalent with clearing all responsibilities from this UniquePointer. - UniquePointer( Type *assignedInstance = NULL ); + UniquePointer( Type *assignedInstance = NULL ); //! Transfers assignedInstance ownership from donor to this UniquePonter, old owned instance will be deleted. //! If donor had nothing, is equivalent with clearing all responsibilities from this UniquePointer. @@ -41,10 +42,6 @@ namespace Utility //! Will auto delete assigned dynamic instance. ~UniquePointer(); - //! Assigns assignedInstance ownership to this UniquePonter, old owned instance will be deleted. - //! If NULL is assigned is equivalent with clearing all responsibilities from this UniquePointer. - UniquePointer & operator = ( Type *assignedInstance ); // potential ambiguous - //! Transfers assignedInstance ownership from donor to this UniquePonter, old owned instance will be deleted. //! If donor had nothing, is equivalent with clearing all responsibilities from this UniquePointer. UniquePointer & operator = ( const UniquePointer &donor ); @@ -84,9 +81,6 @@ namespace Utility struct UniqueArray { //! Wrapper to safely transfer dynamic ownership/responsibility public: - //! Creates an empty UniqueArray. - //UniqueArray(); - //! Assigns assignedInstance ownership to this UniquePonter, old owned array will be deleted. //! If NULL is assigned is equivalent with clearing all responsibilities from this UniqueArray. UniqueArray( Type assignedArray[] = NULL ); @@ -97,10 +91,6 @@ namespace Utility //! Will auto delete assigned dynamic array. ~UniqueArray(); - - //! Assigns assignedInstance ownership to this UniquePonter, old owned array will be deleted. - //! If NULL is assigned is equivalent with clearing all responsibilities from this UniqueArray. - UniqueArray & operator = ( Type assignedArray[] ); // potential ambiguous //! Transfers assignedInstance ownership from donor to this UniquePonter, old owned array will be deleted. //! If donor had nothing, is equivalent with clearing all responsibilities from this UniqueArray.