2013-11-02 18 views
5

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

+1

何? – elyashiv

答えて

7

あなたはミックスインを使用することができます:

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... 
};