Let's say I have a base class called Human
. Baby
and Adult
are sub-classes of Human
. Human
has a function run
as a pure virtual function and I don't want Baby
to inherit run
but if I don't override run
, Baby
would become an abstract class.
class Human{
public:
// Some human attributes.
virtual void run()=0;
};
class Adult: public Human{
public:
void run(){
// Adult running function
}
};
class Baby: public Human{
public:
void run()=delete; //error
// If I don't override `run` then Baby is marked as an abstract class
void crawl(){
// Baby crawling function.
}
};
Error if I mark run
with =delete
prog.cpp:19:10: error: deleted function ‘virtual void Baby::run()’
void run()=delete;
^~~
prog.cpp:6:22: error: overriding non-deleted function ‘virtual void Human::run()’
virtual void run()=0;
^~~
Might be a bad example but what I want is to inherit everything except for run
in Baby
. Is it possible?
Disclaimer: I'm not implementing it anywhere. Just out of curiosity.