【问题标题】:invalid conversion from 'int' to int* [-fpermissive]从 'int' 到 int* 的无效转换 [-fpermissive]
【发布时间】:2015-10-22 13:00:09
【问题描述】:

之前我已经实现了这个并且它有效:

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: 在函数'void mexFunction(int, mxArray**, int, const mxArray**)': 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]”

【问题讨论】:

    标签: c++ matlab mex


    【解决方案1】:

    train_X 是一个int*。当您执行train_X[i] 时,您现在会得到一个intcontrastive_divergence() 虽然想要 int*。由于您无法将int 转换为int*,因此您将收到后续错误。您要么需要将train_X[i] 的地址作为&amp;train_X[i] 传递,要么只传递train_X

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2019-11-19
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2021-01-05
      相关资源
      最近更新 更多