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