2016-11-16 3 views
-1

Hallo Ich versuche, auf eine Klasse innerhalb meiner Quelldatei Termin zuzugreifen, um Zugriff auf Uhrzeit und Datum zu erhalten. Mein Problem ist, dass wenn ich das tue, sobald ich Registerkarten die Erbschaft schaltet und keinen Termin mehr finden kann.Zugreifen auf Klasse innerhalb der Quelldatei für die Vererbung

Dies ist meine Quelldatei.

Dies ist die Klasse, in der ich versuche, den Termin zu erben.

#include <iostream> 
    using std::ostream; 
    using std::istream; 
    #ifndef Session_H 
    #define Session_H 
    class Session : public Appointment 
{ 
    protected: 
    string client_id, fname, lname; 
    int charge; 
    public: 
Session(); 
string get(); 
string get_id() const; 
string get_fname() const; 
string get_lname() const; 
int calc_charge(); 
~Session(); 
}; 
#endif 
+0

„Mein Problem ist, dass, wenn ich dies tun, sobald ich Registerkarten, um die Erbschaft delinks schaltet und kann keinen Termin mehr finden. " Was soll das genau bedeuten ?? – HazemGomaa

+0

Sie haben Zugriff auf Zeit und Datum als öffentlich, so dass Sie nicht erben müssen, um auf sie zuzugreifen !! – HazemGomaa

Antwort

0

Sie müssen die Quelldatei enthalten:

#ifndef Session_H 
#define Session_H 
#include <iostream> 
#include "Appointment.h" // or whatever the source file is named 

// These really shouldn't be here (namespace pollution)  
using std::ostream; 
using std::istream; 
using std::string; 

class Session : public Appointment 
{ 
protected: 
string client_id, fname, lname; 
int charge; 
public: 
Session(); 
string get(); 
string get_id() const; 
string get_fname() const; 
string get_lname() const; 
int calc_charge(); 
~Session(); 
}; 
#endif 

Beachten Sie auch, dass die gehören Wachen an der Spitze der Datei gehören, bevor irgendetwas anderes (zu, dass absolut alles sicherzustellen, darin ist vor wiederholter Aufnahme geschützt). Mit anderen Worten, die beliebige Datei, die als Header verwendet werden soll, sollte Wächter enthalten. Zeitraum.

EDIT

Hier ist ein Beispiel dafür, wie die Dinge könnten mehr ordnungsgemäß angelegt:

// Appointment.h 

#ifndef Appointment_H 
#define Appointment_H 
#include "Chronos.h" // Or wherever your Date and Time objects are defined 

class Appointment 
{ 
    protected: 
    Date date; 
    Time start_time, end_time; 
    char description[40], location[40]; 
    public: 
    Appointment(); 
    void get(); 
    void print() const; 
    Date get_date() const; 
    Time get_start_time() const; 
    Time get_end_time() const; 
}; 
#endif 


// Session.h  


#ifndef Session_H 
#define Session_H 
#include <iostream> 
#include <string> 
#include "Appointment.h" 

// These really shouldn't be here (namespace pollution)... 
using std::string;  
using std::ostream; 
using std::istream; 

class Session : public Appointment 
{ 
protected: 
    string client_id, fname, lname; 
    int charge; 
public: 
    Session(); 
    string get(); 
    string get_id() const; 
    string get_fname() const; 
    string get_lname() const; 
    int calc_charge(); 
    ~Session(); 
}; 
#endif 

// main.cpp  

#include "Session.h" 

int main() 
{ 
    Session session; 
}  
+0

Vielen Dank, aber die Terminklasse befindet sich in der gleichen Datei wie main und ist daher .cpp-Datei. –

+0

Okay, deine Codeorganisation ist also falsch. Sie sollten keine .cpp-Dateien aus einer Kopfzeile einschließen. Es sollte in etwa so aussehen: –

+0

Siehe den aktualisierten Code in meinem ursprünglichen Post. –

Verwandte Themen