00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef CEYLAN_CLONABLE_H_
00028 #define CEYLAN_CLONABLE_H_
00029
00030
00031 #include "CeylanException.h"
00032
00033 #include <string>
00034
00035
00036
00037 namespace Ceylan
00038 {
00039
00040
00041
00043 class CEYLAN_DLL ClonableException: public Ceylan::Exception
00044 {
00045
00046 public:
00047
00048 explicit ClonableException( const std::string & message ) ;
00049
00050 virtual ~ClonableException() throw() ;
00051
00052
00053 } ;
00054
00055
00056
00061 class CEYLAN_DLL Clonable
00062 {
00063
00064 public:
00065
00066
00068 Clonable()
00069 {
00070
00071 }
00072
00073
00075 virtual ~Clonable() throw()
00076 {
00077
00078 }
00079
00080
00090 virtual Clonable & clone() const = 0 ;
00091
00092
00093
00094 private:
00095
00096
00104 Clonable( const Clonable & source ) ;
00105
00106
00114 Clonable & operator = ( const Clonable & source ) ;
00115
00116
00117
00118 } ;
00119
00120 }
00121
00122
00123 #endif // CEYLAN_CLONABLE_H_
00124