C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Einfache Frage zu this

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Ernst Baumann
Guest





PostPosted: Sat Mar 25, 2006 4:31 pm    Post subject: Einfache Frage zu this Reply with quote



Hallo allerseits,
Durch einen Mausklick soll die in einem Ausgabefeld sich befindliche
Zahl um 1 erhöht werden.
In einem Fenster wird dazu eine "Wanze" angebracht.
In dem folgenden Programm habe ich dies "simuliert". Das
programmtechnische Problem ist, wie man in einem Objekt auf das dieses
Objekt umfassende Objekt zugreifen kann. Dies wird in C++mit this
gemacht.
Das Programm funktioniert einwandfrei, nur bekomme ich mit meinem
MS VC++ Vers. 6.0 die Warnung:
"warning C4355: this' : wird in Initialisierungslisten fuer
Basisklasse verwendet"


1)
Ist dies eine Warnung, hinter der sich ein schlimmer Programmierfehler
verbirgt, oder brauche ich diese Warnung nicht beachten ?

2)
Wenn der Compiler die Zeile
MyFenster *pmyfObj;
abscannt, dann steht dort der unbekannte Bezeichner MyFenster
Der Compiler würde deshalb eine Fehlermeldung bringen, wenn nicht am
Anfang die Deklaration
class MyFenster;
gemacht wird, in der dem Compiler der Bezeichner MyFenster bekannt
gemacht wird.
Das habe ich so weit verstanden, aber:
wenn ich in dem Programm (siehe unten) vor der der Klasse MyWanze die
Klasse MyFenster bringen würde und dann aber dafür dies dem Compiler
durch die folgenden Deklarationen mitteile:
(***)
class MyFenster;
class MyWanze;
bekomme ich viele Fehlermeldungen.
Warum ist das so (ich habe doch durch die Dekarationen (***) die
Bezeichner bekannt gemacht), bzw. wie kann man das vermeiden ?

Das folgende ergibt also Fehlermeldungen:

.......
class MyFenster;
class MyWanze;


class MyFenster{
public:
int myZahl;
MyWanze mywObj;
MyFenster(int z);
};


class MyWanze{
public:
MyFenster *pmyfObj;
MyWanze(MyFenster *f);
void klickAufruf();
};
.......


3)
Frage:
Nennt man
class MyFenster;
eine Deklaration

und

class MyFenster{
public:
int myZahl;
MyWanze mywObj;
MyFenster(int z);
};
eine Definition oder wie heißt das richtig ?



-------------------------------------------------------------------------------------------
Hier das funktionierende Programm:
-------------------------------------------------------------------------------------------

PS:
Dies ist ein Demo-Programm, deshalb habe ich auch die Datenmember
statt private public und statt cout printf benutzt.

--------------- Programm-Beginn --------------------------
#include "stdafx.h"
#include <stdio.h>


class MyFenster;

class MyWanze{
public:
MyFenster *pmyfObj;
MyWanze(MyFenster *f);
void klickAufruf();
};


class MyFenster{
public:
int myZahl;
MyWanze mywObj;
MyFenster(int z);
};


MyFenster::MyFenster(int z):mywObj(this){
myZahl = z;
}


MyWanze::MyWanze(MyFenster *f){
pmyfObj=f;
}


void MyWanze::klickAufruf(){
(pmyfObj->myZahl)++;
printf("%d\n", pmyfObj->myZahl);
}



int main(){
MyFenster myfObj(13);
myfObj.mywObj.klickAufruf();
myfObj.mywObj.klickAufruf();
myfObj.mywObj.klickAufruf();
return 0;
}
--------------- Programm-Ende --------------------------

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Marcel Müller
Guest





PostPosted: Sun Mar 26, 2006 1:06 am    Post subject: Re: Einfache Frage zu this Reply with quote



Hallo,

Ernst Baumann schrieb:
[...]
Quote:
Das Programm funktioniert einwandfrei, nur bekomme ich mit meinem
MS VC++ Vers. 6.0 die Warnung:
"warning C4355: this' : wird in Initialisierungslisten fuer
Basisklasse verwendet"

Das Thema wurde gerade mal 5 Threads weiter oben durchgekaut.
"this in Initialisierungsliste"


Marcel

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.