2017-02-20 3 views
-1

Я в настоящее время с этим вопросом с наследованием:Как дать заголовочный файл знать о наследовании классов

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

Ваши объявления класса должны быть в ваших заголовочных файлах. – drescherjm

ответ

1

определить класс в своих HPP файлов и когда вы пишете тело функции и должны определить их как DerivedExample :: DoSomething() < - если это функция, и у должны включать соответствующий файл hpp в файле .cpp , если я правильно понял ur qs. то их не будет никакой двусмысленности

iam прилагается мой пример добавления нескольких файлов программного кода. Аналогичным образом определите свой класс inherite, за которым следует так называемая функция.

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; 
} 
+0

Спасибо. Я знаю это, но я не могу перенести объявление метода (имя и параметры) в файл заголовка. Это устаревший проект, и множество параметров типа недоступны в заголовке, только в файле cpp. Я знаю, что я могу переместить эти типы в заголовок, но их слишком много, это не стоило усилий. –