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 A并实现在class 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(),我希望结果为c100 而不是 9。

有可能在 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 回答