Min plan er så at jeg et helt andet sted har noget der minder om: TTest *T1 = new T1(); TTest *T2 = new T2(); ... T1->settings = T2->settings;
Når ovenstående linie her sker, bliver operator = jo brugt, og den skal så kalde funktionen UpdateSettings() i Owner (som så vil være T1 i det her tilfælde).
Det virker bare ikke for godt, jeg kan ikek kompilere koden, da TSettings ikke kender TTest, og hvis jeg bytter om på dem kender TTest ikke TSettings. Jeg har prøvet at lave en "prototype" til TTest, men det virker heller ikke, for så kender den ikke TTest->UpdateSettings();
Mærkligt, jeg har lavet lidt om i det exempel du sendte. Det virker fint, så prøvede jeg at rette det til jeg egentligt skulle bruge det i, men nu virker det ikke. Når jeg kompilere skriver den: [C++ Error] FixSiteUnit.cpp(54): E2279 Cannot find default constructor to initialize member 'TFixSite::Settings'
Ved du hvad det betyder? Eller skal du bruge lidt kode?
Det skal forresten måske siges at det jeg har lavet om er at flydte deklerationerne af klasserne over i en header fil, og funktionerne i en cpp fil. Og det virker jo altså.
Ok, nu tror jeg jeg forstår. I TFixSite, er Settings erklæret som: fsSettings Settings; Men constructoren til Settings er: __fastcall fsSettings::fsSettings(TFixSite *Owner) Så der skal jeg selvføldig ha this, eller noget lignende, med. Men hvordan: fsSettings *Settings; virker, men så skal jeg jo også ændre alle de stedet i koden hvor jeg bruger Settings fre: Fix[FS_FIX1]->Settings.ShowEIDLabel = true; til: Fix[FS_FIX1]->Settings->ShowEIDLabel = true; Det er saftsusseme mange steder. Er der en anden løsning ?
Jeg er lige gået tilbage til Test tingen. Det ser sådan her ud: class TTest { private: int pTop, pLeft; public: TTest() : TSettings(); TSettings settings; UpdateSettings();
}; TTest::TTest() : TSettings(this) { } Og så får jeg fejlen [C++ Error] Unit1.h(30): E2312 'TSettings' is not an unambiguous base class of 'TTest'
men, der er også lige en detajle. Jeg har lige lavet de med pointer løsningen (men jeg er stadig meget interesseret i at vide hvordan jeg gør det andet). Jeg kan se at de indstillinger jeg laver på den ene, godt nok også bliver ført over på den anden når jeg bruger =. Men funktionen UpdateSettings bliver ikke kørt bliver ikke kørt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.