Avatar billede strickie Nybegynder
19. februar 2002 - 17:08 Der er 2 kommentarer og
1 løsning

Kald metode på sub class

Jeg sidder MEGET fast i mit lille problem her.
Ok hold lige fast.

Jeg har en klasse XMLHandler som indeholder følgende metoder:

class XMLHandler
{
public:
    XMLHandler();
    void charData(char *chaCaractersPAR);
    void startElement(char *strElementPAR);
    void endElement(char *strElementPAR);
};

Fra denne klasse nedarver min anden klasse: XMLHandlerReadOPI

class XMLHandlerReadOPI : public XMLHandler
{
public:
    XMLHandlerReadOPI();
    void charData(char *chaCaractersPAR);
    void startElement(char *strElementPAR);
    void endElement(char *strElementPAR);
    Parameter *XMLParameters;
};

Jeg sender en pointer til et object af typen XMLHandlerReadOPI til en metode på et object af typen XMLParser:

class XMLParser
{
public:
    void setHandler(XMLHandler* xhaHandlerPAR);
    void parse(FILE *XMLFile);
private:
    XMLHandler* xhaHandler;
};

Metoden som XMLHandlerReadOPI bliver sendt til:

void XMLParser::setHandler(XMLHandler* xhaHandlerPAR)
{
    xhaHandler = xhaHandlerPAR;
}

XMLParser objectet kalder startElement, endElement og charData metoderne på XMLHandlerReadOPI, men den kode som bliver kørt er koden fra XMLHandler.

Håber det gav bare lidt mening.

Er der nogen der har en forklaring.
Hvorfor bliver koden på Super-klassen kørt og ikke koden fra Sub-klassen?

Avatar billede jpk Nybegynder
19. februar 2002 - 17:13 #1
Du skal lave den virtuel
Avatar billede chries Nybegynder
19. februar 2002 - 17:14 #2
jeg går ud fra at du kalder:
xhaHandler->funktionsnavn();

Overloadede functioner skal erklærers virtuel

class XMLHandler
{
public:
    XMLHandler();
    virtual void charData(char *chaCaractersPAR);
    virtual void startElement(char *strElementPAR);
    virtual void endElement(char *strElementPAR);
};
Avatar billede strickie Nybegynder
19. februar 2002 - 17:17 #3
Tak gutter, netop som de første svar tikkede ind, fandt jeg selv svaret i min "Teach yourself......", men tak alligevel.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester