[英]How to manipulate an array of structure containing 2D array
使用C++ ,我正在實現一個定義為HiddenLayer的結構數組
struct HiddenLayer
{
int prev; ///Number of Rows in node
int next; ///Number of Columns in node
float **node; ///2D array pointer
};
結構數組在主程序中初始化,節點是指向結構內部二維數組的指針。 我正在初始化這個數組
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));
我做錯了什么?
錯誤消息一目了然:您混淆了類型。
HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));
應該
HLayer[0].node = (float **) malloc((HLayer[0].prev) * sizeof(float *));
和
HLayer[0].node[i] = malloc(HLayer[0].next * sizeof(float));
應該
HLayer[0].node[i] = (float *) malloc(HLayer[0].next * sizeof(float));
但這就是說,為什么要在 C++ 中使用malloc()
和 family?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.