Announcement

Collapse
No announcement yet.

Zugreifen auf Klassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugreifen auf Klassen

    Hallo guten Tag,
    ich habe mal wieder ein Problem:

    In einer Klasse vom Typ TForm habe ich public die Instanz einer anderen Klasse "MyClass1" angelegt. Eine zweite Klasse lege ich an mit
    Code:
    MyClass1 = new TMyClass1();
    MyClass2 = new TMyClass2(this); // Konstruktor TMyClass2::TMyClass2(TComponent* Owner);
    In MyClass2 möchte ich jetzt auf MyClass1 zugreifen mit
    Code:
    Owner->MyClass1.....
    Da finde ich leider die Class MyClass1 nicht. Wie komme ich auf MyClass1 ohne die Klasse im Konstruktor übergeben zu müssen?

    Danke
    Dieter
    Mache Software wird nie fertig. Man muss sie für fertig erklären.

  • #2
    In dem du bsp. die Instanz von MyClass1 über einen Setter in MyClass2 setzt
    Christian

    Comment


    • #3
      Ja genau. Aber das möchte ich umgehen mit
      Code:
      TForm::TForm(TComponent* Owner)
      {
      	TMyClass1 MyClass1 = new TMyClass1();
      	TMyClass2 MyClass2 = new TMyClass2(this);
      }
      
      
      TMyClass2::TMyClass2(TComponent* Owner)
      {
      	TMyClass1 InstanzOfMyClass1 = Owner->MyClass1;
      }
      Mache Software wird nie fertig. Man muss sie für fertig erklären.

      Comment


      • #4
        Dazu müsstest du Owner auf einen Typen casten der auch einen MyClass1 Member hat. Solange Owner nur als TComponent bekannt ist wird Owner auch nur die Dinge raus rücken die TComponent kennt. Durch das casten hast du es dann geschafft das TMyClass2 nicht nur die konkrete TMyClass1 Klasse kennt sondern auch die TForm Klasse. Vermutlich ziemlich unnötig. Was spricht dagegen einfach TMyClass1 zu übergeben.

        Comment


        • #5
          Hallo Ralf,
          gute Frage, da habe ich keine Antwort. Der Aufwand bei meinem Weg scheint mir nun auch recht hoch.

          Danke Dir
          Dieter
          Mache Software wird nie fertig. Man muss sie für fertig erklären.

          Comment


          • #6
            Wie komme ich auf MyClass1 ohne die Klasse im Konstruktor übergeben zu müssen?
            Du wolltest die Klasse doch nicht im Konstruktor übergeben....
            Ansonsten schaffe einen weiteren Konstruktor
            MyClass2 = new TMyClass2(this, myclass1);
            Christian

            Comment

            Working...
            X