Virtuelle Methode aufrufen



  • Hallo zusammen,

    kann mir einer sagen, wie ich eine virtuelle Methode aufrufen kann?

    Habe z.B. folgende Klasse:

    class Test 
    {
      public:
      virtual bool berechne();
    }tester;
    

    Wenn ich nun versuche die Methode "berechne()" aufzurufen (also: Test::OnInit() ), dann kommt folgender Fehler:

    error C2352: Unzulaessiger Aufruf einer nichtstatischen Member-Funktion

    Wenn ich die Methode über das Objekt "tester" aufrufe kommt zwar kein Fehler, doch das Programm führt dann die Funktion nicht so aus wie es sein soll.

    Danke für die Antworten!
    Gruß



  • Ja wenn du es so aufrufen willst wie da geschrieben, müsste es heißen:

    class CTest
    {
    public: 
        CTest(void) {}
        ~CTest(void) {}
    
    public:
        static bool calculate(void);
    };
    
    // Aufruf:
    if (CTest::calculate() == false)
        // ...
    

    (Pure-)Virtual wäre

    class CTest
    {
    public: 
        CTest(void) {}
        ~CTest(void) {}
    
    public:
        virtual bool calculate(void) /* = 0*/; // Für Pure-Virtual das =0 ausklammern
    };
    
    // Aufruf:
    CTest instance;
    
    if (instance.calculate() == false)
        // ...
    

    Weißt du überhaupt wofür eine Funktion Virtual ist usw?


Anmelden zum Antworten