Dear visitor, welcome to Coder Forum.
If this is your first visit here, please read the Help. It explains in detail how this page works.
To use all features of this page, you should consider registering.
Please use the registration form, to register here or read more information about the registration process.
If you are already registered, please login here.
Probleme Beim Include
Hey Leute
ich möchte eine kleine Bankanwendung schreiben leider habe ich schon beim includen probleme.
ich habe die 3 Klasse Kunde, Konto und Bank;
wenn ich jedoch in der stdafx.h zuerst das Konto einbinde bekomm ich eine fehlermeldung, da ich in dieser klasse einen pointer auf ein Bank Objekt habe, dass er den Objekttyp nicht erkennt. Binde ich jedoch zuerst Die Bank ein dann kommt ein fehler, dass er den Zeiger auf das Konto nicht kennt.
also letztendlich möchte ich gerne wissen wie ich 2 dateien includen kann die sich gegenseitig benötigen.
ich hoffe ihr vertseht was ich meine
liebe grüße
ja #pragma once hab ich ja drin ich definiers ja nicht nochmal i.wie fehlt mir immer eine klasse weil die noch nicht kompiliert wurde.
wenn ich sie in einer datei hab sieht das ganze so aus
|
C/C++ Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
class CKonto
{
private:
CBank* Bank;
int Kontonummer;
float Kontostand;
public:
float CKonto::getKontostand()
{
return Kontostand;
}
void CKonto::Überweisen(string d_Kontonummer,int d_BLZ,float betrag)
{
}
void CKonto::einzahlen(float x)
{
Kontostand = Kontostand+x;
}
void CKonto::auszahlen(float x)
{
Kontostand = Kontostand-x;
}
CKonto::CKonto(CBank* y,int x)
{
Bank = y;
Kontonummer = x;
Kontostand = 0.0;
}
CKonto::~CKonto(void)
{
}
};
|
|
C/C++ Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
class CBank
{
private:
string Name;
int BLZ;
vector<CKonto*> b_Konten;
public:
vector<CKonto*>* CBank::getKonten()
{
return &b_Konten;
}
int CBank::getBLZ()
{
return BLZ;
}
string CBank::getName()
{
return Name;
}
CBank::CBank(string x,int y)
{
Name = x;
BLZ = y;
}
CBank::~CBank(void)
{
}
};
|
hast du da eine idee ?
Genau für diesen Zweck hat man Header-Files. Du erstellst für jede Klasse eine Headerdatei und bindest dann in deiner Header Datei zum "Hauptprogramm" in der du die Klassen benutzt nur die entprechenden Header Files ein. In die Header Files kommen nur die Deklarationen der Methoden und Member-Variablen. In der zugehörigen cpp Datei werden diese dann implementiert.
Für den ersten überblick ist das hier schön gezeigt:
http://de.wikibooks.org/wiki/C++-Program…er_Header-Datei
ja genau so hab ich das auch gemacht aber in meiner deklaration hab ich ja in beiden klassen jeweils ein attribut mit dem typ der anderen klasse
Du musst ne Vorwärtsdeklaration machen, sprich das Schlüsselwort class hinzufügen.
|
C/C++ Quellcode
|
1
2
3
4
5
6
7
8
|
class CKonto
{
private:
class CBank* Bank;
int Kontonummer;
float Kontostand;
...
|
Mfg Rushh0ur
hey danke jetzt gehts
guten rutsch noch