Vererbung



  • Hallo zusammen,
    ich will mir ein eigenes TShap erstellen, dabei erbe ich natürlich von TShape. Zu meinem TShape (MyTShape) sollen einige Variablen hinzu kommen.
    Hier ein Teil meiner MyTSharpe-Klasse

    class MyTShape:public TShape
    {
    	bool Status;
    
    	public:
            bool getStatus(){return Status;}
            MyTShape();
    };
    

    in meiner Hauptform mach ich folgendes:

    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    	MyTShape *test;
    	test = new MyTShape();
    }
    

    leider bekomme ich zwei Fehler:
    [Linker Fehler] Error: Ungelöste externe 'MyTShape::' referenziert von C:\MYTSHAPE\DEBUG_BUILD\UNIT1.OBJ
    [Linker Fehler] Error: Ungelöste externe 'MyTShape::MyTShape()' referenziert von C:\USERS\MYTSHAPE\DEBUG_BUILD\UNIT1.OBJ

    Ich habe den verdacht das es am Konstruktor liegt.
    Kann mir jemand einen Tipp geben?



  • Hallo

    Der Konstruktor von MyTShape ist zwar deklariert, aber nicht implementiert. Und außerdem wäre ein Konstruktor angebracht, der den VCL-üblichen Owner mit übernimmt, denn der Konstruktor von TShape erwartet diesen.

    class MyTShape:public TShape
    {
        bool Status;
    
        public:
            bool getStatus(){return Status;}
            __fastcall MyTShape(Classes::TComponent* AOwner) 
              : TShape(AOwner)
              {}
    };
    

    Natürlich wäre es sinnvoll, die Implementationen der Funktionen von der Deklaration abzutrennen und in eine eigene cpp-Datei zu verlegen.

    bis bald
    akari



  • danke für deine Hilfe, es hat geklappt.
    Mit der externen Datei hast du recht, ich hab das aber absichtlich so für den Post geschrieben.

    Gruß h0scHberT



  • Herrlich - So nun funktionierts, das ist mir so aufgefallen, weil der Player plötzlich auf der Form sichtbar wurde !
    ... Visible = false bewirkt da Wunder 😉

    Danke alles geklärt

    EDIT: Ich war noch nie so glücklich Musik zu hören 😉

    EDIT 2: UUUUPPPPS wie kommt das hier rein ????????????????
    SRY ich glaube da waren einige sehr verwirrt 😃


Anmelden zum Antworten