[C++] Klasse als Parameter

Moin

Ich habe bei folgende Code:

class blub
{
...

public:

void test1(...., blub k);
void test2(...., blub t)
}

void blub::test2
{
....
..
t.test1(...,this);
}

Folgendes Problem:

in der Funktion test1 soll halt die Klasse als Parameter mitgegeben werden, in der die Funktion aufgerufen wurde. Wenn ich "this" angebe, bekomme ich die Fehlermeldung das "this" const ist. Und es darf halt nicht const sein^^

Jemand ne Lösung für mein Problem? :D

MfG

Faultier
 
du kannst afaik keine klasse als objekt übergeben.

ich wüsste zumindest nicht, dass das gehen würde, bzw. warum das gehen sollte ;)
 
Soweit ich mich erinner ist this ein Zeiger auf das Objekt selbst. Infolgedessen müsste es heissen:

Code:
class blub {
public void test1(blub* k);
public void test2(blub t);
}

void blub::test2(blub t) {
t.test1(this);
}

void blub::test1(blub* k){
k->doSmth();
}
 
Original von M4CH!N3
du kannst afaik keine klasse als objekt übergeben.

doch, objekte (klassen nicht, nur die instanzen davon) werden z.B. beim copy-constructor übergeben.

außerdem kannst du innerhalb von test1 und test2 nur auf eine kopie des der funktion übergeben objekts zugreifen, wenn du auf das originalobjekt zugreifen willst, musst du entweder eine referenz ( test1(blub& b) ) oder ein pointer ( test1(blub* b) ) übergeben.

und mal abgesehen davon würde ich mir bei sonem konstrukt mal gedanken über das design des codes machen (mal abgesehen natürlich, es gibt einen guten Grund, das so zu machen, wie z.B. dass blub ein array mit blub-kindern verwaltet, bei denen es allen test1 aufrufen soll) :)
 
Zurück
Oben