【发布时间】:2018-11-06 09:52:07
【问题描述】:
我有一个基类和派生类:
class Neuron
{
protected:
double input;
double output;
};
class InputNeuron : public Neuron
{
public:
InputNeuron();
};
派生类的默认构造函数定义如下
InputNeuron::InputNeuron() : input(0.0), output(0.0) {}
问题是: 输入输出初始化错误。
我的目标是从继承中受益,以避免在派生类中重新声明输入和输出。但是,在当前状态下,使用这些成员会引发一条消息:input is not a nonstatic data member or base class of class InputNeuron,我似乎无法从中获取信息。
【问题讨论】:
-
这是否意味着如果我希望派生类具有不同的默认构造,除了将公共类成员添加到每个派生类之外没有其他解决方案?
-
不,看我的回答。给定基础的足够低级别的受保护构造函数,派生类应该能够以他们喜欢的任何方式初始化基础。
-
这并没有解决问题,但是
InputNeuron有一个名为output的数据成员似乎很奇怪。不是说错了…… -
是的,我承认。选择,选择。我可以在该对象中添加一些预处理,但它可能看起来不优雅。可以想象,无论是效率还是设计,都有提升的空间。
标签: c++ inheritance default-constructor