如果基类包含双指针成员,则派生类的构造函数
Constructore for derived class if base class contain double pointer member
我在基类中使用双指针成员。但是在派生类构造函数中,我得到错误
错误:没有用于调用"Layer::Layer(tensor&,float&("的匹配函数:层(**tn,**input(
// base class
class Layer
{
protected:
struct tensor **tensor_node;
float **tensor_input_activation;
public:
/* ***Constructor*** */
Layer(struct tensor **, float **);
};
Layer::Layer(struct tensor **tn, float **input)
{
*tensor_node = *tn;
*tensor_input_activation = *input;
}
// derived class from Layer
class BatchNormalization : public Layer
{
string layer_name;
public:
/* ***Constructor*** */
BatchNormalization(struct tensor **, float **, string);
/* ***Member_function*** */
float* batch_normalization_operation_function();
};
BatchNormalization::BatchNormalization(struct tensor **tn, float **input, string l_name)
:Layer(**tn, **input)
{
layer_name = l_name;
}
如何解决这个问题?如果基类包含双指针成员,我们如何定义构造函数?
您通过了Layer(tn, input)
。但在此之前,您应该修复Layer::Layer
以停止取消引用无效指针。
Layer::Layer(tensor **tn, float **input)
: tensor_node(tn), tensor_input_activation(input)
{}
BatchNormalization::BatchNormalization(tensor **tn, float **input, string l_name)
: Layer(tn, input), layer_name(l_name)
{}
相关文章:
- 如何委托派生类使用其父构造函数?
- 如果基类包含双指针成员,则派生类的构造函数
- C++:为什么无法在派生类中访问受保护的构造函数?
- C++派生的类构造函数
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- 在没有默认构造函数的情况下创建的派生对象
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- 如何在派生构造函数中多次构造基类
- C++(控制台)构造函数和派生类
- 为什么为派生类定义复制构造函数需要定义基类的默认构造函数?
- 在dynamic_pointer_cast后调用派生类的构造函数
- C++ 继承基构造函数,但仍调用默认派生构造函数
- 如何在派生构造函数的大括号中初始化基构造函数?C++
- 如何使派生构造函数将串联值传递给其父构造函数
- dynamic_cast派生构造函数内部
- 复制构造函数-是在派生构造函数之前调用的基本构造函数
- 在派生构造函数中调用基方法是不好的做法
- 基构造函数和派生构造函数之间的歧义
- 派生构造函数警告:永远不会被执行
- 如何将在派生构造函数中生成的参数传递给默认构造函数?