c++ - How do I call an overloaded function from a function in the base class? -


i have class (b) inherits class (a). want call function class has been overridden. want able call overridden function independent of class inherited base (say class c : public a , want call c's version of function.)

here's example

class {  public:     void callf();     virtual void f() {}; };  class b : public {  public:     void f(); };  void a::callf() {     //fyi, want able call without knowing super class is.     f(); }  void b::f() {     std::cout << "i want function called, instead default f() called."; } 

edit: in real code, have std::vector<a> avector;. call avector.push_back(b());. if called avector[0].callf();, default a::f() called. answered below, have problem slicing.

your construction:

vector_of_a.push_back( b() ); 

doesn't store b in vector. constructs b, constructs a that, stores that a in vector. consequence, experience slicing.

see more info:

https://stackoverflow.com/a/4403759/8747


Comments

Popular posts from this blog

jasper reports - Fixed header in Excel using JasperReports -

media player - Android: mediaplayer went away with unhandled events -

python - ('The SQL contains 0 parameter markers, but 50 parameters were supplied', 'HY000') or TypeError: 'tuple' object is not callable -