Funkcje wirtualne od-definiowanie funkcji

Funkcje wirtualne od-definiowanie funkcji
P9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Witam,
Otóż mam pytanie w jaki sposób radzicie sobie w takiej sytuacji:

Mam klase abstrakcyjna ktora nazwałem Obiekt. Mam wiele obiektów dziedziczacych po klasie Obiekt, ale nagle okazuje się, że np. w jednej klasie Beczka funkcja obroc, ma po prostu nie isnieć/ nigdy się nie wykonywać.

Kopiuj
class Obiekt
{
public:

virtual void obroc() = 0;

//wiele innych funkcji wirtualnych i nie wirtualnych
};

class Beczka : public Obiekt
{
public:
void obroc() { //kod}
}
 

Do tej pory ten problem rozwiązywałem po prostu zostawiając tą funkcje pusta

void Beczka::obroc()
{
//pusta
}

Ale jestem ciekawy czy istnieje jakis sposób aby usunąć konieczność definiowania tej funkcji aby program się kompilował

Dzieki

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
class Object{
    virtual void method(){};
};

Niech funkcja nie będzie czysto wirtualna.

satirev
  • Rejestracja: dni
  • Ostatnio: dni
0

Najlepiej przygotuj domyślną implementację metody czysto wirtualnej (nie rezygnuj z metody czysto wirtualnej), a w klasie pochodnej przenieś tę metodę do części prywatnej.

Kopiuj
 
class Obiekt
{
public:
  virtual void obroc() = 0;
};

void Obiekt::obroc() {}
 
class Beczka : public Obiekt
{
private:
  void obroc() override { Obiekt::obroc(); }
};
 
int main() {
  Beczka b;
  return 0;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.