Futásidejű hiba egyszerű öröklésnél

Mi okoz futásidejű hibát az alábbi programban? (ha nincs benne véletlen elírás, vagy más hiba)
Tipp: ha nem megy, távolítsd el az első sort a kódból, és a fordító segít a hiba megtalálásában.

 

#pragma warning(disable: 4102)

#include <iostream>

using namespace std;

 

class Base {

      public:

            Base() {

            }

 

            virtual void func() {

                  cout << "Base func called!\n";

            }

};

 

 

class Derived : public Base {

      public:

            Derived() {

            }

 

            virtual void func() {

                  Base:func();

                  cout << "Derived func called!\n";

            }

};

 

 

int main() {

      Derived d;

      d.func();

}

 



A megoldásért kattints ide!
A Derived osztály func függvénye végtelen rekurzióba kerül, mert első sora önmagát hívja, nem pedig az ősosztály func függvényét. A fordító itt "Base"-t egy használaton kívüli címkének tekinti mivel csak egyetlen kettőspontot raktunk utána. Helyesen: Base::func();



2008.02.08. 18:26:52 |  Permalink  |  Hozzászólások száma: 0  |  Tárgyszavak: Fejtörők


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások