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 

Zeiger auf umhuellendes Objekt ermitteln

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





PostPosted: Sun Feb 25, 2007 10:57 pm    Post subject: Zeiger auf umhuellendes Objekt ermitteln Reply with quote



Hallo,

in meinem derzeitigen Programm könnte ich eine Möglichkeit gebrauchen, in
einem Element einer Objektinstanz einen Zeiger auf die umhüllende Klasse zu
bekommen. Etwas in der Art:

class Element {
public:
dosomething() {
Huelle* ptr_to_container(); // wie??????
// im "richtigen" Programm soll hier eine Nachricht mit
// einem Zeiger in eine Liste eingetragen werden um ein
// Nachrichtenbasiertes System zu ermöglichen
ptr_to_container->Message();
}
}

class Huelle {
public:
Huelle();
....
void Message() { cout << "in Huelle" << endl; }
void DoSomthing() {
e.dosomething();
}
privat:
Element e;
}

int main(int,char**) {
Huelle container;

container.DoSomthing();

return 0;
}

Das ist jetzt kein sinnvolles Beispiel, soll aber illustrieren was ich
möchte. Natürlich könnte ich Element e explizit mit "this" im Konstruktor
von Huelle initialisieren, aber geht das auch anders, automatisch?

Alle Hinweise und Suchstichworte willkommen.

Gruß HPH
Back to top
Thomas Maeder
Guest





PostPosted: Sun Feb 25, 2007 11:49 pm    Post subject: Re: Zeiger auf umhuellendes Objekt ermitteln Reply with quote



Hans-Peter huth <hans-ph (AT) web (DOT) de> writes:

Quote:
in meinem derzeitigen Programm könnte ich eine Möglichkeit
gebrauchen, in einem Element einer Objektinstanz einen Zeiger auf
die umhüllende Klasse zu bekommen. Etwas in der Art:

class Element {
public:
dosomething() {

Syntaxfehler - es fehlt der Rückgabetyp.


Quote:
Huelle* ptr_to_container(); // wie??????

Indem Du das so programmierst.

Z.B. könnte der Element-Konstruktor eine Referenz (oder einen Zeiger)
auf Huelle erhalten und sich merken.
Back to top
Martin Winkler
Guest





PostPosted: Mon Feb 26, 2007 12:34 am    Post subject: Re: Zeiger auf umhuellendes Objekt ermitteln Reply with quote



Hans-Peter huth wrote:

Quote:
Hallo,

in meinem derzeitigen Programm könnte ich eine Möglichkeit gebrauchen, in
einem Element einer Objektinstanz einen Zeiger auf die umhüllende Klasse
zu bekommen. Etwas in der Art:
[...]
Das ist jetzt kein sinnvolles Beispiel, soll aber illustrieren was ich
möchte. Natürlich könnte ich Element e explizit mit "this" im Konstruktor
von Huelle initialisieren,

Genau das ist der Weg.

Quote:
aber geht das auch anders, automatisch?

Meinem Verständnis nach gibt C++ so etwas nicht automatisch her.

Gruß
Martin
Back to top
Rolf Magnus
Guest





PostPosted: Mon Feb 26, 2007 3:37 pm    Post subject: Re: Zeiger auf umhuellendes Objekt ermitteln Reply with quote

Hans-Peter huth wrote:

Quote:
Hallo,

in meinem derzeitigen Programm könnte ich eine Möglichkeit gebrauchen, in
einem Element einer Objektinstanz einen Zeiger auf die umhüllende Klasse
zu bekommen. Etwas in der Art:

class Element {
public:
dosomething() {
Huelle* ptr_to_container(); // wie??????
// im "richtigen" Programm soll hier eine Nachricht mit
// einem Zeiger in eine Liste eingetragen werden um ein
// Nachrichtenbasiertes System zu ermöglichen
ptr_to_container->Message();
}
}

;

Quote:

class Huelle {
public:
Huelle();
...
void Message() { cout << "in Huelle" << endl; }
void DoSomthing() {
e.dosomething();
}
privat:
Element e;
}

;

Quote:
int main(int,char**) {

Wenn du die Parameter bei main() nicht brauchst, lass sie einfach weg.

Quote:
Huelle container;

container.DoSomthing();

return 0;
}

Das ist jetzt kein sinnvolles Beispiel, soll aber illustrieren was ich
möchte. Natürlich könnte ich Element e explizit mit "this" im Konstruktor
von Huelle initialisieren, aber geht das auch anders, automatisch?

Es wurde ja schon geschrieben, daß das nicht geht. Wie sollte das auch
gehen? Was sollte dieser Automatismus in einem Element liefern, das kein
Member von Huelle ist?
Back to top
Marcel Müller
Guest





PostPosted: Mon Feb 26, 2007 4:08 pm    Post subject: Re: Zeiger auf umhuellendes Objekt ermitteln Reply with quote

Hallo!

Hans-Peter huth schrieb:
Quote:
class Element {
....
}

class Huelle {
....
privat:
Element e;
}

Das ist jetzt kein sinnvolles Beispiel, soll aber illustrieren was ich
möchte. Natürlich könnte ich Element e explizit mit "this" im Konstruktor
von Huelle initialisieren, aber geht das auch anders, automatisch?

Keine Chance! Das kann nicht gehen. Das umhüllende Objekt muss nicht
einmal existieren und es könnte nahezu jeden beliebigen Typs sein.

Wenn dass tatsächlich dem avisierten Einsatz hinreichend nahe kommt (1:1
Kardinalität etc.), dann ist das Design falsch. Sowas wäre dann angebracht:
class Huelle : private Element {
Element könnte dann über virtuelle Funktionen mit der "Hülle" kommunizieren.

Alternative B: (die ist letztlich schon genannt)
Element benötigt bei der Konstruktion ein Kommunikationsinterface, das
Hülle implementieren muss (in C++ eine komplett abstrakte Klasse, von
der virtuell geerbt wird). Damit bekommt man auch ein Container-Problem
in den Griff, also der Fall, wenn Hülle mehrere Elementen enthalten kann.

Die programmtechnischen Maßnahmen ergeben sich notwendigerweise aus der
Aufgabenstellung, da Element ganz offenbar für sich alleine nicht
lebensfähig ist und einen typisierten Partner braucht.


Marcel
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.