C++中的继承和构造函数定义
Inheritance and constructor definition in C++
我有一个基础 class 和派生的:
class Neuron
{
protected:
double input;
double output;
};
class InputNeuron : public Neuron
{
public:
InputNeuron();
};
派生的默认构造函数class定义如下
InputNeuron::InputNeuron() : input(0.0), output(0.0) {}
问题是:
输入输出初始化错误
我的目标是从继承中获益,避免在派生的 classes 中重新声明输入和输出。但是,在当前状态下,使用这些成员会引发一条消息:input is not a nonstatic data member or base class of class InputNeuron
,消息我似乎无法从中获取信息。
一个class构造函数只能初始化class的(直接)数据成员;它不初始化基础 class 数据成员。相反,您需要为此使用基础 class 构造函数。您需要先定义一个合适的基础构造函数。如果你只想派生 classes 使用它,就把它设为 protected
:
class Neuron
{
protected:
Neuron(double i, double o) : input(i), output(o) {}
private:
double input;
double output;
};
class InputNeuron : public Neuron
{
public:
InputNeuron() : Neuron(0, 0) {}
// ^^^^^^^^^^^^
};
(您 可以 还保留受保护的基础数据成员,然后在派生构造函数的主体中 分配 给它们,但那是不是很好的风格,因为最好立即用它们的预期值初始化变量。)
我有一个基础 class 和派生的:
class Neuron
{
protected:
double input;
double output;
};
class InputNeuron : public Neuron
{
public:
InputNeuron();
};
派生的默认构造函数class定义如下
InputNeuron::InputNeuron() : input(0.0), output(0.0) {}
问题是: 输入输出初始化错误
我的目标是从继承中获益,避免在派生的 classes 中重新声明输入和输出。但是,在当前状态下,使用这些成员会引发一条消息:input is not a nonstatic data member or base class of class InputNeuron
,消息我似乎无法从中获取信息。
一个class构造函数只能初始化class的(直接)数据成员;它不初始化基础 class 数据成员。相反,您需要为此使用基础 class 构造函数。您需要先定义一个合适的基础构造函数。如果你只想派生 classes 使用它,就把它设为 protected
:
class Neuron
{
protected:
Neuron(double i, double o) : input(i), output(o) {}
private:
double input;
double output;
};
class InputNeuron : public Neuron
{
public:
InputNeuron() : Neuron(0, 0) {}
// ^^^^^^^^^^^^
};
(您 可以 还保留受保护的基础数据成员,然后在派生构造函数的主体中 分配 给它们,但那是不是很好的风格,因为最好立即用它们的预期值初始化变量。)