如何让头文件知道类继承

时间:2017-02-20 04:09:29

标签: c++ inheritance header

我目前在继承方面存在这个问题:

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 ++很陌生。谢谢。

1 个答案:

答案 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;
}