我有一堂课:
class SymbolIndexer { protected: SymbolIndexer ( ) { } public: static inline SymbolIndexer & GetUniqueInstance ( ) { static SymbolIndexer uniqueinstance_ ; return uniqueinstance_ ; } };
我应该如何修改它以禁用代码,例如:
SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );
并且只允许以下代码:
SymbolIndexer & ref_symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );
您可以将复制构造函数设为私有并且不提供任何实现:
private: SymbolIndexer(const SymbolIndexer&);
或者在 C++11 中,明确禁止它:
SymbolIndexer(const SymbolIndexer&) = delete;