因此,标题可能有点令人困惑,但这是我的问题:
我有一个超类(我们称它为SupClass)和一个继承自SupClass的子类(我们称其为InhClass)。现在,我想为我的InhClass构造一个接收SupClass对象的构造函数,并用它初始化InhClass的“ SupClass部分”。
这是一个试图说明清楚的代码示例:
Class SupClass {
public:
SupClass() {
//Initialize SupClass object
}
};
Class InhClass : private SupClass {
public:
InhClass(SupClass obj) {
//Initialize SupClass inheritance with obj
}
};
这将用于您已经初始化了SupClass对象(并且可能对其进行了处理)但又持续了很短时间的情况,或者从那时起您要使用InhClass对象。无需复制所有内容(例如,关闭并重新打开文件),我将能够使用其基类对象初始化子类。
提前致谢,
对任何英语错误我感到抱歉,
您必须将其复制或移动才能成为新对象的一部分。无法将现有对象转换为新类型。
以通常的方式在初始化程序列表中对其进行初始化。
// Copy an existing object
InhClass(SupClass const & obj) : SupClass(obj) {}
// Move an existing object
InhClass(SupClass && obj) : SupClass(std::move(obj)) {}
为了避免复制/移动,您必须使用继承以外的其他东西。您可以有一个“包装器”类,其中包含对的指针/引用SupClass
以及您想使用其扩展的任何内容。
struct Wrapper {
SupClass & obj;
// Refer to existing object without creating a new one
Wrapper(SupClass & obj) : obj(obj) {}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句