0

私はclass A別のファイルにあるを持っています(sayfile1.cpp

class A{
public:
      virtual int add(){
      int a=5;
      int b=4;
      int c = a+b;
      return c;
      }
};

今度は別のファイル(たとえば)に、で宣言された仮想メソッドfile2.cppから継承されたクラスを作成して実装したい関数(この関数には他にもたくさんのものがあります)があります。class Aclass A

void function(Mat param1, Mat param2)
{
  //Some process here..
  ..
  ..
  int c=100;
  class B:public A{
  public:
        virtual int add(){

        return c;
        }
  };

}

ここで、関数を呼び出す場合int add()、結果をc9ではなく100にします。

C ++でこのようなことをすることは可能ですか?

前もって感謝します

4

2 に答える 2

1

メンバー変数を定義します。

class B: public A {
    int c_;
public:
    explicit B(int c):c_(c){};
    virtual int add() {
        return c_;
    }
}
B variable((100));
于 2012-12-21T11:15:48.587 に答える
0

あなたはあなたをに分割する必要がありfile1.cppますfile1.h

#ifndef FILE1_H
class A {
public:
  virtual int add();
};
#endif

そしてfile1.cppそれの実装で:

int A::add { /*your code * }

他のファイルには、ヘッダーファイルのみをインクルードします。

#include "file1.h"

以下はC++では無効です。

void function(Mat param1, Mat param2)
{
  //Some process here..
  ..
  ..
  int c=100;
  class B:public A {
  public:
    virtual int add(){

    return c;
    }
 };

}

代わりに、次のようなものが必要です。

class B : public A {
public:
    B(int v) : c(v) {}
    virtual int add(){ return c; }
private:
    int c;
};

void function(Mat param1, Mat param2)
{
  //Some process here..
  ..
  ..
  int c=100;
  B o(c);

}

于 2012-12-21T11:14:06.260 に答える