【发布时间】:2018-09-10 16:10:38
【问题描述】:
我有以下类层次结构,其中基类依赖其派生类在其构造函数中为其提供参数:
class Member
{
public:
Member(int v);
};
class Base
{
public:
Base(const Member& m);
};
class Derived : public Base
{
public:
Derived() : m_(123), Base(m_) // <- here is the problem
{
}
private:
Member m_;
};
不过,问题是,在Derived 的构造函数中,Base 构造函数首先被调用,而 Derived 的成员变量 m_ 它所依赖的变量尚未初始化。
有没有办法强制编译器首先调用m_ 的构造函数,或者我应该只修改我的类层次结构?
【问题讨论】:
-
可以
Member m_只是在基类构造函数中初始化的Base的(受保护的)成员吗?有理由支持继承而不是组合吗? -
在这种特殊情况下,您可以写
Derived() : Base(Member(123)), m_(123) {},但我觉得您离实际问题太远了;)
标签: c++ class oop inheritance