这些是我拥有的函数和结构声明,我不允许更改它们。
DerivedA giveDerivedA ();
DerivedB giveDerivedB ();
struct Base{
QString elementId;
QString elementType;
};
struct DerivedA : Base {
int a;
int b;
};
struct DerivedB : Base {
int c;
int d;
};
但我需要的是这样的事情:
struct DerivedA : Base {
int a;
int b;
void create();
QString doc;
};
如何将这些方法和成员添加到我得到的结构中?
我的第一个想法是:
struct myA: DerivedA {
void create();
QString doc;
};
你有什么建议吗?
编辑:第二种选择(选择)
struct myA{
void create();
QString doc;
private:
DerivedA derivedA;
};
答案 0 :(得分:2)
这类似于人们扩展标准库类的问题。如果您的基类没有虚拟析构函数,则无法安全地继承它。在这种情况下,您必须使用自由函数(无论如何首选)或组合。
否则,你所拥有的就是好的。
答案 1 :(得分:1)
使用组合或继承,具体取决于类的关系类型(参见例如Effective C ++中的第32和38项)。
答案 2 :(得分:0)
这不起作用,这就是你的方式。