Carna  Version 3.0.1
Classes | Namespaces | Macros
noncopyable.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Carna::base::noncopyable
 Objects from classes inheriting this cannot be copied. More...
 

Namespaces

 Carna::base
 Contains the core framework components.
 

Macros

#define NON_COPYABLE   private: ::Carna::base::noncopyable __noncopyable;
 Features class it is placed in as non-copyable. More...
 

Detailed Description

Defines Carna::base::noncopyable and NON_COPYABLE.

Definition in file noncopyable.h.

Macro Definition Documentation

#define NON_COPYABLE   private: ::Carna::base::noncopyable __noncopyable;

Features class it is placed in as non-copyable.

Example:

1 class MyClass
2 {
3 
4  NON_COPYABLE
5 
6 public:
7 
8  MyClass();
9 
10 }; // MyClass
11 
12 class MyCopyableClass : public MyClass
13 {
14 
15 public:
16 
17  MyCopyableClass();
18 
19  MyCopyableClass( const MyCopyableClass& );
20 
21  MyCopyableClass& operator=( const MyCopyableClass& );
22 
23 }; // MyCopyableClass

This example also shows why the macro variant is to be preferred in place of the noncopyable super-class: In case some derivation becomes copyable, the "is" semantics stay valid.

Definition at line 109 of file noncopyable.h.