C++ 将多个对象数组传递给函数
我得到的错误是randm.cpp:42:52:错误:调用'Neuron::activationFunc(double&,double&)'neu.activationFunc(功能[2][4],预测[2][1])时没有匹配的函数 是否可以传递数组,或者我必须找到另一种方法来传递数组?这是我的密码。我已经好几年没有上课了,所以我有点生疏了C++ 将多个对象数组传递给函数,c++,C++,我得到的错误是randm.cpp:42:52:错误:调用'Neuron::activationFunc(double&,double&)'neu.activationFunc(功能[2][4],预测[2][1])时没有匹配的函数 是否可以传递数组,或者我必须找到另一种方法来传递数组?这是我的密码。我已经好几年没有上课了,所以我有点生疏了 #包括 #包括 #包括 #包括 使用名称空间std; int correct=0; 类神经元{ //双功能[150][4]; 公众: 双α=0.5; 双w1=
#包括
#包括
#包括
#包括
使用名称空间std;
int correct=0;
类神经元{
//双功能[150][4];
公众:
双α=0.5;
双w1=1.0;
双w2=-1;
双w3=0.5;
双w4=0;
双x=0;
intθ=1;
int hardLim=0;
int轨道=0;
//void testClass();
无效激活函数(双特征[2][4],双预测[2][1]);
};
void Neuron::activationFunc(双特征[2][4],双预测[2][1]){
对于(int i=0;i<2;i++){
x=(w1*特征[i][0])+(w2*特征[i][1])+(w3*特征[i][2])+(w4*特征[i][3])+预测[2][1];
cout要使其编译,您需要更改此行:
neu.activationFunc(feature[2][4], predicted[2][1]);
所以它看起来像这样:
neu.activationFunc(feature, predicted);
您可以通过引用或指针传递多维数组:
您的方法原型应该如下所示:
class Neuron {
//...
void activationFunc(double(&)[2][4], double(&)[2][1]);
};
定义如下:
void Neuron::activationFunc (double (&feature)[2][4], double (&predicted)[2][1]) {
for (size_t i{}; i != 2; ++i) {
x = (w1 * feature[i][0]) + (w2 * feature[i][1]) +
(w3 * feature[i][2]) + (w4 * feature[i][3]) + predicted[1][0];
std::cout << "X value is: " << x << std::endl;
}
}
- 循环中存在未定义的行为:
x = (w1*feature[i][0]) + (w2*feature[i][1]) + (w3*feature[i][2]) + (w4*feature[i][3]) + predicted[2][1];
predicted
是一个[2][1]
维度的数组,因此有效范围是[1][0]
而不是[2][1]
将数组放入结构中,然后传递结构。结构特征{double value[2][4];};
和结构预测{double value[2][1];};
可能重复打开更多警告。您正在访问数组边界以外的元素。预测[2][1]
neu.activationFunc(功能[2][4],预测[2][1]);
您没有传递多维数组,但只传递一个元素。为此,只传递数组的名称:neu.activationFunc(功能,预测);
`注意,这里省略了“数组大小”,因为它们是下标(选择单个元素,尽管它们当然超出范围)。
neu.activationFunc(feature, predicted);
x = (w1*feature[i][0]) + (w2*feature[i][1]) + (w3*feature[i][2]) + (w4*feature[i][3]) + predicted[2][1];