c++ - Class members and inheritance -
i lost. have class editor
, class controller
. classes workfloweditor
, workflowcontroller
derive editor
, controller
respectively. class controller
has protected member editor editor
, class workflowcontroller
has private member workfloweditor editor
(with same name).
edit eitant:
here's simplified code snipped illustrate op has described:
class controller { editor editor; // ... } class workfloweditor : public editor { // ... }; class workflowcontroller : public controller { workfloweditor editor; // ... };
my application module graphical interface. in workflow mode, ribbon appears on launch, , wizard displayed. on click on 1 button, method in class controller
called. execution crashes because @ time, editor editor
class member of object type controller
dead. class member editor editor
same class member workfloweditor editor
(same name).
in other words, if class a
has member of class b
, class childa
(derived a
) has member of class childb
(derived b
), , member of type childb
, b
have same name, isn't member "inherited"?
the object inherited, not same object 1 declared in derived class. derived class member separate object base class member, though have same name. technically, hides base class member, making accessible qualified name, controller::editor
.
you can achieve want virtual function, override in derived class access object contained there:
class controller { public: // no data members, abstract interface // access data member of derived class virtual editor & editor() = 0; virtual ~controller() {} }; class workflowcontroller : public controller { public: workfloweditor & editor() {return editor_;} private: // object - accessible true type here, or // abstract type via abstract interface. workfloweditor editor_; };
Comments
Post a Comment