Zum Inhalt springen

Nur die Instanzen sichtbar, die Klassen aber nicht.


Empfohlene Beiträge

Geschrieben

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?

Geschrieben

Soweit ich weiss, wird sowas für die nächsten Visual Studio Versionen vorgesehen, aber bei C++ Builder oder Visual Studio 2002-2003 habe ich sowas leider noch nicht gefunden :(

Würde mich auch sehr interessieren, wenn dafür jemand eine Lösung hat.

Geschrieben

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?

Geschrieben

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 =)

Geschrieben

Sorry, da habe ich mich vertippt, ich meine natürlich :: .

Ich wollte die Klassen nicht sichtbar haben, nur die Instanzen.

Mit Namespace? Wie funktioniert das genau?

Geschrieben

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;

Geschrieben

Okay, sieht relativ einfach aus.

Und was sind die Vorteile gegenüber meiner Variante, außer daß ich dann die Obere Klasse (bei mir Z1) nicht mehr angeben brauch?

Geschrieben

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)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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