Funkcje wirtualne od-definiowanie funkcji

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ć.

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

1
class Object{
    virtual void method(){};
};

Niech funkcja nie będzie czysto wirtualna.

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.

 
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;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1