C++ 如果基类包含双指针成员,则派生类的构造函数
我在基类中使用双指针成员。但在派生类构造函数中,我得到了一个错误 错误:调用“Layer::Layer(tensor&,float&)”时没有匹配的函数 :层(**tn,**输入) 如何解决这个问题?如果基类包含双指针成员,我们如何定义构造函数?您通过C++ 如果基类包含双指针成员,则派生类的构造函数,c++,oop,C++,Oop,我在基类中使用双指针成员。但在派生类构造函数中,我得到了一个错误 错误:调用“Layer::Layer(tensor&,float&)”时没有匹配的函数 :层(**tn,**输入) 如何解决这个问题?如果基类包含双指针成员,我们如何定义构造函数?您通过层(tn,input)。但在此之前,您应该修复Layer::Layer,以停止对无效指针的解引用 Layer::Layer(tensor **tn, float **input) : tensor_node(tn), tensor_input
层(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)
{}
请提供一个示例。您是否尝试只传入tn、input?看起来您使用的指针是完全错误的。
Layer()
构造函数正在做的事情非常麻烦。如果你相信这就是它所做的,它不会改变tensor\u节点
和tensor\u输入激活
,struct不是一个类型名,而是BatchNormalization::BatchNormalization(struct tensor**tn,float**input,string l\u name):Layer(**tn,**input)中初始化列表中的关键字
您需要删除基类初始化器中多余的星号,以给出BatchNormalization::BatchNormalization(结构张量**tn,浮点**输入,字符串l_名称):层(tn,输入)
。投票结束,因为这本质上是一个打字错误(尽管是由于没有正确理解指针取消引用的作用)。
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)
{}