从 'int' 到 int* 的转换无效 [-允许]

invalid conversion from 'int' to int* [-fpermissive]

本文关键字:int 无效 允许 转换      更新时间:2023-10-16

之前我已经实现了这个,它工作:

int *train_X = (int *)mxGetData(IN_a);// pointer to 6th argument matrix train_X 
for (int i = 0; i < 6; i++)
{
    for (int j = 0; j < 6; j++)
    {
        cout << train_X[6 * i + j] << endl;
    }
}
int sizeTrain_X1 = mxGetM(IN_a);
int sizeTrain_X2 = mxGetN(IN_a);

我甚至可以设法检查我是否得到正确的尺寸与以下,它是好的。

cout <<"Training input NumOfCollum:n"<< sizeTrain_X1 << endl;
cout << "Training input NumOfRows:n"<<sizeTrain_X2 << endl;

,但当尝试我的整个程序与以下初始化时,我得到一个编译错误:

for (int epoch = 0; epoch<training_epochs; epoch++)
{
    for (int i = 0; i<train_S; i++)
    {
        rbm.contrastive_divergence(train_X[i], learning_rate, k);
    }
}

错误信息如下:

RBM.cpp:在function ' void mexFunction(int, mxArray**, int, constmxArray * *)":RBM.cpp:570:64:错误:从' int '到' int* '的无效转换[-fpermissive]RBM.cpp:81:6:错误:初始化void RBM::contrastive_divergence(int*, double, int)的参数1 [-fpermissive]RBM.cpp:615:32:错误:数组下标的int[int]类型无效

train_Xint*。当你做train_X[i]时,你会得到intcontrastive_divergence()想要一个int*。由于无法将int转换为int*,因此会出现后续错误。您要么需要将train_X[i]的地址传递为&train_X[i],要么只需传递train_X