Humble Debugger Humble Debugger - 2 months ago 15
C++ Question

Disable copy constructor

I have a class :

class SymbolIndexer {
protected:
SymbolIndexer ( ) { }

public:
static inline SymbolIndexer & GetUniqueInstance ( )
{
static SymbolIndexer uniqueinstance_ ;
return uniqueinstance_ ;
}
};


How should I modify it to disable code like:

SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );


and only allow code like :

SymbolIndexer & ref_symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );

Answer

You can make the copy constructor private and provide no implementation:

private:
    SymbolIndexer(const SymbolIndexer& that);

Or in C++11, explicitly forbid it:

SymbolIndexer(const SymbolIndexer& that) = delete;
Comments