1. ホーム
  2. c++

[解決済み] コピーコンストラクタの無効化

2022-04-19 14:54:10

質問

私はクラスを持っています。

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;