【发布时间】:2013-12-27 13:17:11
【问题描述】:
在下面过于简化的示例中,class Derived 继承自 class Base 的私有成员/方法。我想做的是能够在派生类中的继承结构中添加一个额外的成员(double salary)。
struct Person {
int age;
int height;
};
class Base {
protected:
Person worker;
public:
double hours (Person *employee);
};
class Derived: public Base {
private:
//Class has an inherited member named "Person worker"
//How do I add new member "double salary" to struct "Person worker"
double salary (Person *manager); //A method that will rely on "double salary"
};
也许像这样(如下弗拉德所建议的那样)会起作用,但有更好的方法吗?
struct Person {
int age;
int height;
};
struct Person2: Person {
double salary;
}
class Base {
private:
Person worker;
public:
double hours (Person *employee);
};
class Derived: public Base {
private:
Person2 fulltime;
double salary (Person2 *manager); //A method that will rely on "double salary"
};
如果我错了,请纠正我,但Person worker 仍然由派生类继承,只是它不能直接访问(但同样被继承的hours 方法可以访问它,因为它是一部分基类)。
【问题讨论】:
-
纯好奇:你能解释一下
hours方法的作用吗? -
@KarolyHorvath:这是一个虚构的例子,但是 hours 方法,比如说,返回员工工作的小时数。基类可以用于普通工人,派生类可以用于全职经理,其工资而不是小时工资。
-
你不能保护工人吗?还是给 Base 添加一个 getter 函数?
-
为什么要传递一个Person?基类已经包含一个。
-
@KarolyHorvath:同样,由于这是一个虚构的例子,返回的小时数取决于另一个人的年龄/身高。我知道这听起来很有趣,但问题的重点是如何从派生类向结构添加新成员,同时能够从基类继承(结构)成员/方法。
标签: c++ inheritance