Probleme mit dem "->" Operator
-
Tuts das nicht? Wenn nicht, dann Konstruktor:
C/C++ Code:
Camera* cam;...
Game::Game ()
:
cam(new Camera()) // Initialisiere den Zeiger auf cam mit einer neuen Kamera
// Damit die auch über die Methoden als Nicht-Member-Variable da bleibt müssen wir sie mit new am Heap anlegen
{
}Game::~Game ()
{
// Was wir mit new am Heap anlegen muss auch wieder freigegeben werden
delete cam;
}
C/C++ Code:
Camera* cam;...
Game::Game ()
:
cam(new Camera()) // Initialisiere den Zeiger auf cam mit einer neuen Kamera
// Damit die auch über die Methoden als Nicht-Member-Variable da bleibt müssen wir sie mit new am Heap anlegen
{
}Game::~Game ()
{
// Was wir mit new am Heap anlegen muss auch wieder freigegeben werden
delete cam;
}
C/C++ Code:
Camera* cam;...
Game::Game ()
:
cam(new Camera()) // Initialisiere den Zeiger auf cam mit einer neuen Kamera
// Damit die auch über die Methoden als Nicht-Member-Variable da bleibt müssen wir sie mit new am Heap anlegen
{
}Game::~Game ()
{
// Was wir mit new am Heap anlegen muss auch wieder freigegeben werden
delete cam;
}Funktioniert auch nicht den jetzt meint er bei (new Camera()), dass er keinen geeigneten Standartkonstruktor findet.
p.s nebenbei:
Wenn ich ein normales Object anlege um es z.b in einer Methode einer Klasse zuverwenden, will es aber in einer weiteren Methode der selben Klasse nutzen, muss ich es dann nochmal instanzieren??
Beispiel:
class Test { public: void Hallo(); void Bye(); };[code]
void Test::Hallo()
{
Meet MyMeet;
MyMeet.Treffen();
}void Test::Bye()
{
MyMeet.GoodBye();
//Hier kennt er ja das MyMeet nicht mehr.
}
-
Offenbar hat deine Camera-Klasse verschiedene Konstruktoren, statt () kommt da dann halt eben (vector,vector,vector) oder was auch immer hin. Ein passender Konstruktor halt, so als würdest du das Objekt ganz normal erstellen, da musst du Camera ja auch was übergeben:
Camera cam; // funktioniert ja dann auch nicht, musst ja auch: Camera cam(hier_was_rein); // schreibenMfG SideWinder
-
Oh ja seh ich auch grad ich DEpp

-
So richtig funktionieren tuts immer noch nicht..dann lass ich das eben und erstelle normale Objecte.
DOch da ergibt sich folgendes Problem, welches ich ja mit der eben versuchten Methode nicht ergeben hat.Wenn ich ein normales Object anlege um es z.b in einer Methode einer Klasse zuverwenden, will es aber in einer weiteren Methode der selben Klasse nutzen, muss ich es dann nochmal instanzieren??
Beispiel:
class Test { public: void Hallo(); void Bye(); };void Test::Hallo() { Meet MyMeet; MyMeet.Treffen(); } void Test::Bye() { MyMeet.GoodBye(); //Hier kennt er ja das MyMeet nicht mehr. }
-
Wenn du das machen willst dann muss MyMeet als member in die Klasse.
class Test{ public: void Hallo(); void Bye(); protected: Meet MyMeet; }; void Test::Hallo(){ MyMeet.Treffen(); } void Test::Bye(){ MyMeet.GoodBye(); }Kurt
-
Nimm meinen Rat und ließ dir mal ein gutes Tutorial zum Thema Klassen durch zB hier: http://tutorial.schornboeck.net
oder auch Volkards Tutorial auf http://www.volkard.deMfG SideWinder
-
Wenn du das machen willst dann muss MyMeet als member in die Klasse.
C/C++ Code:
class Test{
public:
void Hallo();
void Bye();
protected:
Meet MyMeet;
};void Test::Hallo(){
MyMeet.Treffen();
}void Test::Bye(){
MyMeet.GoodBye();
}Kurt
Und was ist wenn die Klasse keinen Standartkonstr. verwendet?
Sondern einen parameterabhänigen Eigenkonstr.?
Also z.B.: Meet MyMeet(i,a);
-
Dann würd ichs so machen
class Test{ public: Test() { MyMeet = new Meet( 12, "a" ); } virtual ~Test() { delete MyMeet; } void Hallo(); void Bye(); protected: Meet * MyMeet; }; void Test::Hallo(){ MyMeet->Treffen(); } void Test::Bye(){ MyMeet->GoodBye(); }oder auch
class Test{ public: Test( int x, const char * a ): MyMeet( x, a ){ } Test(): MyMeet( 0, "" ){ } void Hallo(); void Bye(); protected: Meet MyMeet; }; void Test::Hallo(){ MyMeet.Treffen(); } void Test::Bye(){ MyMeet.GoodBye(); }Kurt
-
Dann würd ichs so machen
C/C++ Code:
class Test{
public:
Test() { MyMeet = new Meet( 12, "a" ); }
virtual ~Test() { delete MyMeet; }
void Hallo();
void Bye();
protected:
Meet * MyMeet;
};void Test::Hallo(){
MyMeet->Treffen();
}void Test::Bye(){
MyMeet->GoodBye();
}Führt leider zum absturz des Programms.

-
Cyphy schrieb:
Führt leider zum absturz des Programms.

Wann das so ist dann ist in der Klasse Meet der Wurm drin.
Kurt