【发布时间】:2020-04-17 11:39:07
【问题描述】:
使用C++,我正在实现一个HiddenLayer结构的数组,定义为
struct HiddenLayer
{
int prev; ///Number of Rows in node
int next; ///Number of Columns in node
float **node; ///2D array pointer
};
结构数组在主程序中初始化,node是结构内部二维数组的指针。我将这个数组初始化为
int main()
{
struct HiddenLayer HLayer[1];
HLayer[0].prev = 1; //Num of rows
HLayer[0].next = 3; //num of col
HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));
for(int i=0;i<HLayer[0].prev;i++)
HLayer[0].node[i] = malloc(HLayer[0].next * sizeof(float));
return 0;
}
但我收到此错误:
In function ‘int main()’:
main.cpp:22:73: error: cannot convert ‘float*’ to ‘float**’ in assignment
HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));
^
>main.cpp:25:35: error: invalid conversion from ‘void*’ to ‘float*’ [-fpermissive]
HLayer[0].node[i] = malloc(HLayer[0].next * sizeof(float));
我做错了什么?
【问题讨论】:
-
所以这不是c,对吧?
-
(float *) malloc至少应该是(float **) malloc -
1.您正试图将
float *影响到float **。 2. 你没有转换到正确的类型。 -
... 和您的其他
malloc应该转换为(float *)- 简单! -
对不起。被使用 malloc 抛弃。 stackoverflow.com/a/184540/1216776