C++ Ausgelagerte klasse

AirForce

Lt. Junior Grade
Registriert
Okt. 2010
Beiträge
296
Habe eine klasse in eine separate CPP Datei ausgelagert. Aber wieso kann man nicht auf diese ausgelagerte Datei zugreifen? Bekomme Compiler Fehler wie nicht deklarierte Beizeichner, Ungültige Ziffer und Bezeichner wurde nicht gefunden.

Die ausgelagerte klasse:
Code:
#include "stdafx.h"
#include "std_lib_facilities.h"

class Table {
public:
	Table (string n, string n2, int tl, string em):name(n), vorname(n2), Tel_Nummer(tl), e_mail(em){}
	string Name(){ return name;}
	string Vorname(){ return vorname;}
	string E_mail(){ return e_mail;}
	int Tel_Nummer2(){ return Tel_Nummer;}
private:
	string name, vorname, e_mail;
	int Tel_Nummer;
};

Der Hauptprogramm:
Code:
void Person()
{
	Table Person1("Samoa", "Lucas", 06956782, "samoa@mail.ws");

}

int main()
{
    Year();   // von Year bis Write ist alles OK die 
    Age();    
    Read();
    Write();
    Person();  // von hier beginnen die Probleme

    keep_window_open();
    return 0;
}
 
Includest du denn auch den Header deiner ausgelagerten Klasse? Davon kann ich nichts sehen in deinem Hauptprogramm.
Also sowas wie:
Code:
#include "Table.h"
Wird die Table-Klasse mit kompiliert?
 
So ein Fehler habe es in eine CPP Datei geschrieben und nicht in eine Header Datei.

Jetzt habe nur folgende Fehler:
Fehler 1 error C2041: Ungültige Ziffer '9' für Basis '8'
Fehler 2 error C2041: Ungültige Ziffer '8' für Basis '8'
Hat das was mit dem @ Zeichen zu tun?
 
Zuletzt bearbeitet:
AirForce schrieb:
So ein Fehler habe es in eine CPP Datei geschrieben und nicht in eine Header Datei.

Jetzt habe nur folgende Fehler:
Fehler 1 error C2041: Ungültige Ziffer '9' für Basis '8'
Fehler 2 error C2041: Ungültige Ziffer '8' für Basis '8'
Hat das was mit dem @ Zeichen zu tun?


Nee, das hat was hiermit zu tun:

Table Person1("Samoa", "Lucas", 06956782, "samoa@mail.ws");

Integerliterale, die mit einer 0 beginnen, werden vom Compiler als oktale Zahlen (also mit der Basis 8) interpretiert. Im oktalen System gibt es nur die Ziffern 0 bis 7. Die Ziffern 8 und 9 gibt es da also nicht.
Ergänzung ()

Oh, noch was. Deine Klasse schaut an und für sich gut aus, aber du könntest deine getter-Methode noch const machen. Gewöhne dir möglichst früh const-korrektes Programmieren an.

Außerdem würde ich dir noch empfehlen, in deinem Table-Konstruktor die string-Argumente by const reference statt by value zu übergeben (const string& n statt string n), um unnötiges Kopieren zu vermeiden. Bei einem integralen-Datentyp macht das natürlich im Endeffekt wenig Sinn, aber für strings und andere Objekte, bei denen das Kopieren potentiell teuer werden kann, ist das immer eine gute Idee.
 
Zuletzt bearbeitet:
Zurück
Oben