hi
Ich weiß die Frage wurde schonmal gestellt aber leider nicht beantwortet.
Ich möchte das zwei Klassen jeweils einen Zeiger auf die andere Klasse besitzen für den gegenseitigen Zugriff. Aber dabei soll die Klassendeklaration in der .h der jeweiligen Klasse stehen und die Definition in der .cpp Datei.
Den Teil habe ich bis jetzt soweit hinbekommen und er funktioniert auch so wie er sollte. Aber das was ich in den Kunstruktoren auskommentiert habe funktionert nicht. Beim Zugriff auf die Membervariable "test" sagt er mir das er diese nicht finden kann und beim Zugriff auf die Memberfunktion sagte er "'zweitemal' is not a type"...denke mal das heißt auch soviel wie dass er das nicht finden kann.
Aber woran liegt das Problem? In VC++ hat das auf diese Weise funktioniert. Jetzt benutze ich aber Netbeans mit dem gcc Compiler.
Ich weiß die Frage wurde schonmal gestellt aber leider nicht beantwortet.
Ich möchte das zwei Klassen jeweils einen Zeiger auf die andere Klasse besitzen für den gegenseitigen Zugriff. Aber dabei soll die Klassendeklaration in der .h der jeweiligen Klasse stehen und die Definition in der .cpp Datei.
Code:
//klasse.h
#ifndef _KLASSE_H
#define _KLASSE_H
class klasse2;
class klasse {
public:
klasse();
void zweitemal();
private:
klasse2* kl2;
};
#endif
//klasse.cpp
#include "klasse.h"
#include <stdio.h>
#include <iostream>
#include "klasse2.h"
using namespace std;
klasse::klasse() {
cout<<"klasse1"<<endl;
kl2 = new klasse2(this);
//kl2.zweitemal();
//kl2.test = 3;
}
void klasse::zweitemal() {
cout<<"klasse1 zweite ausführung"<<endl;
}
//klasse2.h
#ifndef _KLASSE2_H
#define _KLASSE2_H
class klasse;
class klasse2 {
public:
klasse2(klasse* pkl);
void zweitemal();
int test;
private:
klasse* kl1;
};
#endif
//klasse2.cpp
#include "klasse2.h"
#include "klasse.h"
#include <stdio.h>
#include <iostream>
using namespace std;
klasse2::klasse2(klasse* pkl) {
kl1 = pkl;
cout<<"klasse2"<<endl;
//kl1.zweitemal();
}
void klasse2::zweitemal() {
cout<<"klasse2 zweite ausführung"<<endl;
}
//main.cpp
#include <stdio.h>
#include <iostream>
#include "klasse.h"
using namespace std;
int main(int argc, char** argv) {
cout<<"start"<<endl;
klasse kl1;
return (EXIT_SUCCESS);
}
Den Teil habe ich bis jetzt soweit hinbekommen und er funktioniert auch so wie er sollte. Aber das was ich in den Kunstruktoren auskommentiert habe funktionert nicht. Beim Zugriff auf die Membervariable "test" sagt er mir das er diese nicht finden kann und beim Zugriff auf die Memberfunktion sagte er "'zweitemal' is not a type"...denke mal das heißt auch soviel wie dass er das nicht finden kann.
Aber woran liegt das Problem? In VC++ hat das auf diese Weise funktioniert. Jetzt benutze ich aber Netbeans mit dem gcc Compiler.