我目前在继承方面存在这个问题:
A.hpp
{
class Example;
}
A.cpp
{
class Example : public Base {
//OVERRIDE FUNCTIONS OF CLASS HERE
}
}
B.hpp
{
class DerivedExample;
}
B.cpp
{
class DerivedExample : public Example {
//How to override the functions of class Base here?
}
}
我有一个接收Base
参数的方法:
void doSomething(Base* base) = 0;
问题是,此doSomething
方法仅接受Example
但不接受DerivedExample
。如果让A
的头文件知道类Example
是类Base
的派生类而不移动所有方法定义,我该怎么做?对不起,如果听起来含糊不清,我对C ++很陌生。谢谢。
答案 0 :(得分:1)
在各自的hpp文件中定义类,当你编写函数体时,你必须将它们定义为 DerivedExample :: doSomething()< - 如果这是一个函数, 并且你必须在.cpp文件中包含相应的hpp文件 如果我理解你的qs正确。然后他们不会有任何歧义
iam附加我的示例添加多个文件程序代码。 类似地定义你的继承类,然后是所谓的函数。
header.hpp
#ifndef HEADER_HPP
#define HEADER_HPP
class Addition
{
public :
int sum(int a ,int b);
};
#endif
function.cpp
#include"header.hpp"
int Addition::sum(int a,int b)
{
//int a,b,result;
//result=a+b;
return a+b;
}
main.cpp
#include<iostream>
using namespace std;
#include"header.hpp"
int main()
{
int a,b,result;
Addition add;
cout<<"enter the first number ";
cin>>a;
cout<<"enter the second number";
cin>>b;
result=add.sum(a,b);
cout<<"the sum of the two numbers is "<<result;
return 0;
}