从 'int' 到 int* 的转换无效 [-允许]
invalid conversion from 'int' to int* [-fpermissive]
之前我已经实现了这个,它工作:
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_X
为int*
。当你做train_X[i]
时,你会得到int
。contrastive_divergence()
想要一个int*
。由于无法将int
转换为int*
,因此会出现后续错误。您要么需要将train_X[i]
的地址传递为&train_X[i]
,要么只需传递train_X
相关文章:
- 错误:从"int"到枚举c++的转换无效
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 从 'int' 到 'int*' CPP 的转换无效
- 无效 f(int) 的模板和 decltype
- 错误:从"int"到"int*"的转换无效[-允许].我在下面提供了我的代码,我
- 错误:数组下标的类型"int[int]"无效
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 从类指针到 int 的转换无效
- C++ 错误:由于 swprintf 而从 'int' 到 'const wchar_t* 的转换无效
- 为什么 std::d eclval<int>() = std::d eclval<int>() 无效?
- 错误:数组下标的类型"const bool[int]"无效
- 2D数组中数组下标的类型"int[int]"无效
- 错误:数组下标的类型'int[int]'无效
- C++中的合并排序:无法在合并函数中传递数组 - 转换为'int*'无效
- 数组下标的类型"int[int]"无效
- 使用矢量的数组下标'int[int]'无效类型
- C++中的二进制补码 - 数组下标的类型"int[int]"无效
- 从“char*”到“char”[-fpermissive]的转换无效,数组下标的类型“char[int]”无效
- 无法解决错误:间接寻址需要指针操作数("int"无效)
- C++将数组相互分配;type int*=type int有效,但int=int*无效