Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Static members in C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.11.2016, 13:56 Uhr
Joe1903



Hallo zusammen.Ich habe folgende Frage:
Ich habe aus dem Buch "Programming C++" von Stroustrup diese Aufgabe versucht zu lösen:
Define two classes,each with a static member,so that the construction of each static member involves a reference to the other.Where might such constructs appear in real code?

C++:
#include <iostream>

using namespace std;

struct MemberA
{
   public:

   int x;
   MemberA();
};


struct MemberB
{
   public:

   int x;
   MemberB();
};

class ClassA
{
   public:
   static MemberA x;
};

MemberA::MemberA()
{
   x = ClassB::x.x;
   cout << "Aufruf Konstruktur MemberA" << endl;
}

MemberA::MemberA()
{
   x = ClassB::x.x;
   cout << "Aufruf Konstruktur MemberA" << endl;
}

MemberB::MemberB()
{
   x = ClassA::x.x;
   cout << "Aufruf Konstruktur MemberB" << endl;
}

MemberA ClassA::x;
MemberB ClassB::x;

int main()
{
}


Hierfür bekam ich folgende Beurteilung:
"Dein Vorschlag blendet die Werte der Instanzvariablen MemberA::x und MemberB::x aus und diese spielen im richtigen Leben eine wesentliche Rolle.Durch dieses Ausblenden kommst du dem Problem nicht einmal auf die Spur,geschweige denn,dass du die Aufgabe löst."


Was hab ich falsch gemacht?Versteht jemand,was ich ändern soll?
-----
Edit: cpp-Tags eingefügt. - Beim nächsten mal bitte selbst machen.

Dieser Post wurde am 09.11.2016 um 16:30 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.11.2016, 14:33 Uhr
ao

(Operator)


Mir scheint, das Problem, auf das du stoßen sollst, ist eine Art Henne-Ei-Problem: Um ClassA::x zu erzeugen, brauchst du ein existierendes ClassB::x und umgekehrt.

Welche wesentliche Rolle das im echten Leben spielen soll, verstehe ich allerdings nicht. Wenn man ein Objekt erzeugt, das von anderen Objekten abhängt, die erst in der Zukunft erzeugt werden, dann hat man m.E. einen Designfehler gemacht und die Beziehung zwischen den Objekten nicht richtig modelliert.

Wenn jemand ein Praxisbeispiel mit realen Dingen kennt, unter denen man sich etwas vorstellen kann (mehr als unter ClassA oder MemberB), dann her damit.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.11.2016, 14:30 Uhr
Joe1903




Zitat von ao:
Mir scheint, das Problem, auf das du stoßen sollst, ist eine Art Henne-Ei-Problem: Um ClassA::x zu erzeugen, brauchst du ein existierendes ClassB::x und umgekehrt.

Welche wesentliche Rolle das im echten Leben spielen soll, verstehe ich allerdings nicht. Wenn man ein Objekt erzeugt, das von anderen Objekten abhängt, die erst in der Zukunft erzeugt werden, dann hat man m.E. einen Designfehler gemacht und die Beziehung zwischen den Objekten nicht richtig modelliert.

Wenn jemand ein Praxisbeispiel mit realen Dingen kennt, unter denen man sich etwas vorstellen kann (mehr als unter ClassA oder MemberB), dann her damit.



Was fehlt in meinem obigen Code?Ich komme nicht drauf,was ich anpassen muss damit es stimmt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.11.2016, 21:50 Uhr
ao

(Operator)


Keine Ahnung, ich weiß nicht, worauf die Aufgabe hinauswill. "Definieren Sie zwei Klassen mit statischen Members" - solche Aufgaben sind wenig konkret. Gibts eine Musterlösung?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.11.2016, 11:25 Uhr
Joe1903




Zitat von ao:
Keine Ahnung, ich weiß nicht, worauf die Aufgabe hinauswill. "Definieren Sie zwei Klassen mit statischen Members" - solche Aufgaben sind wenig konkret. Gibts eine Musterlösung?


Ich konnte keine finden.Ich soll nicht die Instanzvariablen nicht ausblenden,aber mehr versteh ich nicht.
Hat jemand eine Idee??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.11.2016, 11:33 Uhr
ao

(Operator)


Ich auch nicht. Ich weiß nicht, was mit ausblenden gemeint ist. Was sagen denn die Mitschüler oder Kommilitonen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.11.2016, 16:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Evtl sollte man die Aufgabe zu Ende lesen:


Zitat:

Define two classes, each with a static member, so that the construction of each
static member involves a reference to the other. Where might such constructs appear in real code?
How can these classes be modified to eliminate the order dependence in the constructors?

Quelle: www.stroustrup.com/4thExercises.pdf Seite 13




Ich denke das die komplette Aufgabe rein "theoretischer" Natur ist - schließlich lässt sich die gegenseitige Abhängigkeit nicht (so einfach) lösen.


Zitat:

Where might such constructs appear in real code?



Wenn der Fall eintritt macht man etwas (designmäßig) falsch
--
class God : public ChuckNorris { };

Dieser Post wurde am 15.11.2016 um 16:53 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: