Zum Inhalt springen

Nur die Instanzen sichtbar, die Klassen aber nicht.


Tapeman

Empfohlene Beiträge

Hallo, wie jedem bekannt ist, bieten graphische Entwicklungsumgebungen von Programmiersprachen die Möglichkeit, den Inhalt von Strukturen u. o. Ä. beim Schreiben eines Punktes in einer Art Klappliste darzustellen.

Wie kann ich es schaffen, das nur Instanzen, aber nicht die Klassen selber in der Auswahl angeboten werden.

Hier ein Beispiel:


class Z

{

 class V { ... };

 class O { ... };

 class V1:public V

 {

  class O1:public O   { ... };

  O1* o1;

 };

 class V2:public V

 {

  class O2:public O   { ... };

  O2* o2;

 };

 class V3:public V

 {

  class O3:public O   { ... };

  O3* o3;

 };

 V1* v1;

 V2* v2;

 V3* v3;

};


Z z;

In der Klappliste für z steht dann V,O,V1,V2,V3,v1,v2 und v3, aber ich will nur v1,v2, und v3 angezeigt bekommen.

Wie bekomme ich das hin?

Muß den Aufbau der Klasse(n) verändern?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube ich habe eine Lösung gefunden:


class Z1

{

 public:

 class V { ... };

 class O { ... };


 class O1:public O { ... };

 class O2:public O { ... };

 class O3:public O { ... };


 class V1:public V  { public: O1* o1; };

 class V2:public V  { public: O2* o2; };

 class V3:public V  { public: O3* o3; };

};


class Z

{

 public:

 Z1:V1 v1;

 Z1:V2 v2;

 Z1:V3 v3;

};


Z z;

Gibts da Einschränkungen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auch wenn das nicht wirklich die Antwort auf die Frage ist verstehe ich nicht, warum ihr die Klassen in die andere Klasse einbettet. Welche Vorteile hat das gegenüber einem gediegen gewählten Namespace?

Und Tapeman - müßte es nicht eher

Z1::V1 v1;

statt

Z1:V1 v1;

sein? ...

Ich kenne mich mit diesen eingebetteten Klassen nicht aus, aber ein Scope-Operator erscheint mir sinnvoll.

klärt mich auf =)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Beim Beispiel vom Tapeman also:


namespace MyClasses

{

 class V { ... };

 class O { ... };


 class O1:public O { ... };

 class O2:public O { ... };

 class O3:public O { ... };


 class V1:public V  { public: O1* o1; };

 class V2:public V  { public: O2* o2; };

 class V3:public V  { public: O3* o3; };

};


class Z

{

 public:

 MyClasses::V1 v1;

 MyClasses::V2 v2;

 MyClasses::V3 v3;

};


Z z;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was heißt hier "Vorteile" :o)

Ich persönlich kenne diese Klassen-in-Klassen (weiß nichtmal mehr, wie die heißen) ... kenne sie nur aus ganz seltenen Fällen bei untypischen Design-Entwürfen.

Im Prinzip benutzt du eine Klasse, um andere Klassen wie in einem Paket zu kapseln. Aber genau für diese Aufgaben sind Namespaces da.

Einen Vorteil kenne ich nicht, außer, daß es vielleicht in EngineeringTools anders aussieht ...

Aber ich wollte dich ja auch nicht berichtigen, sondern vor allem eben wissen, warum du dafür diese Klasse nutzt, eben WEIL ich das nur selten so sehe und eben WEIL das eigentlich nicht wirklich einen Unterschied macht. :o)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...