C++ のコード生成
ReSharper は、ボイラープレートコードを生成するさまざまな方法を提供します。 例: 宣言されていないコードシンボルを使用し、これらのシンボルを用途に基づいて自動的に生成したり、型メンバーを生成したりすることができます。
現在のタイプのメンバー生成オプションは、 Alt+Insert ( )で使用できます。 これらおよび他の多くのコード生成アクションは、 コンテキストアクション を使った Alt+Enter としても利用できます。
使用箇所からコードを生成する
ReSharper では、宣言する前にコードシンボル(メソッド、変数、フィールドなど)を使うことができます。 ReSharper が未宣言のシンボルを検出すると、使用状況に基づいて宣言を生成するための クイックフィックス Alt+Enter を1つ以上提案し、さらに使用コンテキストに合わせて宣言をスマートに調整します:

コンストラクターを生成
コンストラクター生成ウィザードは、選択されたフィールドのパラメーターを取るデフォルト以外のコンストラクターを作成します。
生成されたコンストラクターはすべて同じパターンに従います。
コンストラクターに含まれる各フィールドは、パラメーターで初期化されます。
パラメーターの名前は、対応するフィールドの名前から導出されます。

不足しているメンバーを生成する
この生成アクションは、基本抽象クラスで定義された純粋仮想関数のオーバーライドを作成します。

オーバーライドメンバーを生成する
この生成アクションは、派生クラスに仮想関数のオーバーライドを作成します。

メンバーのオーバーライド ダイアログでは、目的の機能を選択し、生成された上書きに対して次の設定を行うことができます。
'override' 指定子を挿入する — 基本クラスの対応する関数を非表示にする関数を生成する場合は、このチェックボックスをオフにすることができます。
'仮想' 指定子を挿入 は生成されたメソッドを仮想にすることを可能にします。
定義の生成
この生成アクションを使用すると、クラス内で宣言されているが定義を持たないすべてのメンバー関数の定義スタブをすばやく作成できます。
コピー操作と移動操作
この生成アクションは、現在のクラスのオブジェクトのコピーおよび移動方法を定義するコピーコンストラクターおよび operator= 関数を作成します。

コピー操作と移動操作を生成する ダイアログでは、クラスオブジェクトのコピーまたは移動時に考慮する必要がある基本クラスとクラスメンバーを選択し、生成された関数の次の設定を構成できます。
へのアクセス権 では、
public、protected、privateアクセス修飾子を選択できます。コピー / 移動操作 — これらのセレクターを使用すると、操作の作成方法を選択できます。 デフォルトでは、操作の実装が生成されます。 ただし、 明示的にデフォルトと削除された関数(英語)として生成するか、宣言のみを生成するか、1 つまたは別の操作をスキップすることができます。
スワップベースの割当 —
operator=の実装でswap関数を使用するには、このチェックボックスを選択します。 元:Rectangle& operator=(Rectangle other) { using std::swap; swap(*this, other); return *this; }
getter および setter の生成
ReSharper を使うと、既存のフィールドに基づいてクラスの getter と setter 関数を素早く生成することができます:

getter および setter の生成 ダイアログでは、目的のフィールドを選択して、生成された関数の次の設定を構成することができます。
へのアクセス権 では、
public、protected、privateアクセス修飾子を選択できます。種類 を使用すると、getter、setter、その両方を生成するかどうかを選択できます。
パラメーターの適用 では、生成する setter へのパラメーターの渡し方として、const 参照または値による方法を選択できます。
で戻る では、生成された getter がフィールドを返す方法を値、参照、const 参照のいずれかで選択できます。
等値演算子を生成する
このコード生成コマンドを使用すると、選択したフィールドを使用して現在のクラスのオブジェクトを比較する operator== および operator== 関数を生成できます。
関係演算子を生成する
このコード生成コマンドは、選択したフィールドを使用して現在のクラスのオブジェクトを比較する operator<、 operator>、 operator<=、 operator>= 関数を生成できます。
ストリーム操作を生成する
このコード生成コマンドを使用すると、選択したフィールドを使用して現在のクラスのオブジェクトのストリーム出力を生成する方法を定義する挿入演算子 operator<< を生成できます。 たとえば、次のようになります。
必要に応じて、 ostream の代わりに wostream を使用できます。 これを行うには、 ストリーム操作を生成する ダイアログで ワイド文字ストリームを使用する を選択します。
ストリーム出力を生成するもう 1 つのオプションは、 save() と load() または serialize() のような Boost Serialization 関数用のスタブを生成することです。 これを行うには、 ストリーム操作を生成する ダイアログの 操作タイプ セレクタで目的のオプションを選択します。
Generate hash function
このコード生成コマンドを使用すると、クラスのハッシュ関数を生成できます。 2 つのハッシングアルゴリズムのいずれかを選択できます。
- #include <boost/functional/hash.hpp> ... friend std::size_t hash_value(const Rectangle& obj) { std::size_t seed = 0x315E4139; boost::hash_combine(seed, obj.width); boost::hash_combine(seed, obj.height); return seed; }
シフトと xor(英語) 、例:
friend std::size_t hash_value(const Rectangle& obj) { std::size_t seed = 0x315E4139; seed ^= (seed << 6) + (seed >> 2) + 0x3449770D + static_cast<std::size_t>(obj.width); seed ^= (seed << 6) + (seed >> 2) + 0x49751560 + static_cast<std::size_t>(obj.height); return seed; }
スワップ関数を生成する
このコード生成コマンドを使用すると、選択したフィールドを使用して現在のクラスのオブジェクトを交換する swap 関数を生成できます。 たとえば、次のようになります。
Google モックメソッドの生成
このコード生成アクションは、 Google Mock(英語) フレームワークを使用してモッククラスを作成するときに、モックメソッド MOCK_METHOD() を自動的に作成します。
Google Mock ヘッダーファイルがインクルードされている場合、派生クラスで使用できるようになります。
モッククラスでは、モックするメソッドを手動で作成する必要はありません。 代わりに、 GMock メソッドを生成する アクションを呼び出すことができます(これは、 Alt+Enter を使った コンテキストアクションとしても利用できます)。

デフォルトでは、すべての基本クラスメソッドが選択されていますが、一部のモックメソッドを生成したくない場合は、対応するチェックボックスをクリアすることができます。