我的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()
,我希望c
的结果为100而不是9。
是否可以在C ++中执行类似的操作?
提前致谢
答案 0 :(得分:1)
定义成员变量:
class B: public A {
int c_;
public:
explicit B(int c):c_(c){};
virtual int add() {
return c_;
}
}
B variable((100));
答案 1 :(得分: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);
}