8

プログラムをデバッグしています。一部のクラスに対してコピーコンストラクターが呼び出されているかどうかを知る必要があります。コピーコンストラクターを定義していないため、コンパイラーが生成しました。私はそれを定義してそこに入れようとしましcoutたが、今はコピー部分を手動で書かなければなりません。クラスが大きいのでやりたくない。コピーコンストラクターが呼び出されたかどうかを確認する方法はありますが、そのメンバーのコピーを作成することは避けてください。コピー コンストラクターの既定の実装を呼び出すにはどうすればよいですか?

4

1 に答える 1

10

ミックスインを使用できます:

template<class D>
struct traced
{
public:
    traced() = default;
    traced(traced const&) { std::cout << typeid(D).name() << " copy ctor\n"; }

protected:
    ~traced() = default;
};

そして、次のようにクラスから継承します。

class my_class : public traced<my_class>
{
    // usual stuff...
};
于 2013-11-02T16:00:44.070 に答える