Mam 2 zajęcia:
class base {
virtual void foo() {};
};
class derived : public base {
void foo() { base::foo(); }
};
Popełniłem błąd i base:foo();
zamiast tego pisałem base::foo();
. Kod został skompilowany i uruchomiony, ale posegregował.
Nie wiem, jak mogę to wygooglować i nie wiem, co to jest, ale jestem bardzo zainteresowany: co to oznacza?
base:foo();
Jeśli to ważne:
class base : public QAbstractGraphicsShapeItem
warning: label 'base' defined but not used [-Wunused-label]
... być może musimy dodać tę stronę z pytaniami: Czy próbowałeś włączyć ostrzeżeniaOdpowiedzi:
void foo() { base:foo(); }
jest równa:
void foo() { base: // An unused label. foo(); // Calls the function again, resulting in infinite recursion. }
Ze względu na nieskończoną rekurencję funkcja powoduje przepełnienie stosu.
źródło
foo()
na stosie call. dzięki-Wall
, otrzymuję komunikat ostrzegawczy: socc.cc:3:4: ostrzeżenie: etykieta „podstawowa” zdefiniowana, ale nie używana [-Wunused-label] base: // Nieużywana etykieta.