関数呼び出しをラップしたり、関数呼び出しをオーバーロードしたりする方法はありますか?

エディーシールズ

私の目的は、C ++の別のクラスから継承し、すべての親クラスメソッドを同じ方法でオーバーロードするクラスを作成することです。

したがって、メソッドが呼び出されると、いくつかのコードが実行され、元のメソッドが呼び出され、派生クラスのオーバーロードメソッドでもう少しコードが実行されます。

class Base
{
  Base() {}
  ~Base() {}

  void base_method()
  {
    // Does something.
  }
}


template<class T>
class ClassWrapper : public T
{
public:
  ClassWrapper(T base) : T( base ) {}
  ~ClassWrapper() {}

  void wrap_function()
  {
    // multithread block {
    // call base method within multithread block.
      this->base_method();
    // }
  }
}

int main()
{
  Base B;
  ClassWrapper<Base> C( B );

  C.base_method();

  return 0;
}

理想的には、基本クラスについて何も知られていないでしょうが、そのすべてのメソッドをオーバーライドすることができます。

これが可能かどうかはわかりませんが、何か提案があれば素晴らしいです!

Jarod42

継承を使用すると、次のことができます。

class Base
{
  Base() {}
  virtual ~Base() {}

 virtual void base_method()
  {
    // Does something.
  }
};


class BaseWrapper : public Base
{
public:
  BaseWrapper(Base base) : Bas( base ) {}

  void base_method() override
  {
    // Some code ...
    Base::base_method();
    // Some code ...
  }
}

int main()
{
  Base B;
  BaseWrapper C( B );

  C.base_method();
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パラメータとして渡された要素の関数を呼び出す方法はありますか?

分類Dev

パラメータを使用して関数呼び出しを保存する方法はありますか?

分類Dev

ajax呼び出しが完了した後に別の関数を呼び出す方法はありますか?

分類Dev

通常の関数を渡してテンプレート関数を呼び出す方法はありますか?

分類Dev

Nodejs-エラーコールバック時に関数を再呼び出しします-ノンブロッキングの方法はありますか?

分類Dev

C ++で、関数テンプレートを呼び出したり、テンプレートパラメーターを指定したりせずに、関数テンプレートを参照する方法はありますか?

分類Dev

修正方法は、作成した新しい関数内で作成した関数を呼び出すときの関数エラーではありません

分類Dev

bashの「継承」; 関数のオーバーライド(evalなし)でスーパーを呼び出す方法はありますか?

分類Dev

関数をオーバーライドしたAndroidアクティビティは、superを呼び出す必要があります。*

分類Dev

fullcalendar:イベント関数を介してイベントをロードした後にのみdayRenderを呼び出す方法はありますか

分類Dev

オーバーロードされた関数呼び出しを除外する

分類Dev

関数は、呼び出し元のスコープを使用する必要があることを宣言するための方法はありますか?

分類Dev

クラスがPythonにロードされた後に関数を呼び出す方法はありますか?

分類Dev

グローバル関数/静的メンバー関数を一度呼び出し可能にする方法はありますか?

分類Dev

react-nativeのパラメーターを使用して関数を呼び出す方法はありますか?

分類Dev

割り当てられたタイプに基づいて関数を呼び出すために添え字演算子をオーバーロードします

分類Dev

SFINAEを使用したC ++ 11テンプレート関数の特殊化により、さらに特殊化できます(エラー:オーバーロードされた関数の呼び出しがあいまいです)

分類Dev

Web ページに接続し、JS 関数を呼び出し、PHP を使用して HTML をダウンロードする方法はありますか?

分類Dev

boost :: bindを使用した呼び出しエラーに一致する関数がありません

分類Dev

呼び出された関数の引数を使用して関数を呼び出すために使用できるテクニックはありますか?

分類Dev

PowerShellには、複数のパラメーターセットを使用したコマンドの呼び出しを処理する方法がありますか?

分類Dev

forループ内のパラメーターを使用してjavascript関数を呼び出す:ループを一時停止する方法はありますか?

分類Dev

Cプログラムから呼び出したい外部COBOL-IT関数があります。エラー「ERRORC2065: 'productid':undeclaredidentifier」を取得する

分類Dev

jQuery AJAX呼び出しでdone関数をトリガーする方法はありますか?

分類Dev

operator []呼び出しでsetter関数を呼び出すために、演算子をオーバーロードする方法は?

分類Dev

cppコンストラクターを呼び出すための一致する関数呼び出しがありません。どうして?

分類Dev

メンバー初期化子リストを使用した一致する関数呼び出しエラーはありません

分類Dev

スコープ{}ブラケットを追加して変数をスコープ外にすることは、関数またはある種の空のループを呼び出して終了するのと同じ効果がありますか?

分類Dev

名前空間は異なりますが、オーバーロードされた関数の呼び出しがあいまいです

Related 関連記事

  1. 1

    パラメータとして渡された要素の関数を呼び出す方法はありますか?

  2. 2

    パラメータを使用して関数呼び出しを保存する方法はありますか?

  3. 3

    ajax呼び出しが完了した後に別の関数を呼び出す方法はありますか?

  4. 4

    通常の関数を渡してテンプレート関数を呼び出す方法はありますか?

  5. 5

    Nodejs-エラーコールバック時に関数を再呼び出しします-ノンブロッキングの方法はありますか?

  6. 6

    C ++で、関数テンプレートを呼び出したり、テンプレートパラメーターを指定したりせずに、関数テンプレートを参照する方法はありますか?

  7. 7

    修正方法は、作成した新しい関数内で作成した関数を呼び出すときの関数エラーではありません

  8. 8

    bashの「継承」; 関数のオーバーライド(evalなし)でスーパーを呼び出す方法はありますか?

  9. 9

    関数をオーバーライドしたAndroidアクティビティは、superを呼び出す必要があります。*

  10. 10

    fullcalendar:イベント関数を介してイベントをロードした後にのみdayRenderを呼び出す方法はありますか

  11. 11

    オーバーロードされた関数呼び出しを除外する

  12. 12

    関数は、呼び出し元のスコープを使用する必要があることを宣言するための方法はありますか?

  13. 13

    クラスがPythonにロードされた後に関数を呼び出す方法はありますか?

  14. 14

    グローバル関数/静的メンバー関数を一度呼び出し可能にする方法はありますか?

  15. 15

    react-nativeのパラメーターを使用して関数を呼び出す方法はありますか?

  16. 16

    割り当てられたタイプに基づいて関数を呼び出すために添え字演算子をオーバーロードします

  17. 17

    SFINAEを使用したC ++ 11テンプレート関数の特殊化により、さらに特殊化できます(エラー:オーバーロードされた関数の呼び出しがあいまいです)

  18. 18

    Web ページに接続し、JS 関数を呼び出し、PHP を使用して HTML をダウンロードする方法はありますか?

  19. 19

    boost :: bindを使用した呼び出しエラーに一致する関数がありません

  20. 20

    呼び出された関数の引数を使用して関数を呼び出すために使用できるテクニックはありますか?

  21. 21

    PowerShellには、複数のパラメーターセットを使用したコマンドの呼び出しを処理する方法がありますか?

  22. 22

    forループ内のパラメーターを使用してjavascript関数を呼び出す:ループを一時停止する方法はありますか?

  23. 23

    Cプログラムから呼び出したい外部COBOL-IT関数があります。エラー「ERRORC2065: 'productid':undeclaredidentifier」を取得する

  24. 24

    jQuery AJAX呼び出しでdone関数をトリガーする方法はありますか?

  25. 25

    operator []呼び出しでsetter関数を呼び出すために、演算子をオーバーロードする方法は?

  26. 26

    cppコンストラクターを呼び出すための一致する関数呼び出しがありません。どうして?

  27. 27

    メンバー初期化子リストを使用した一致する関数呼び出しエラーはありません

  28. 28

    スコープ{}ブラケットを追加して変数をスコープ外にすることは、関数またはある種の空のループを呼び出して終了するのと同じ効果がありますか?

  29. 29

    名前空間は異なりますが、オーバーロードされた関数の呼び出しがあいまいです

ホットタグ

アーカイブ