【发布时间】:2015-02-08 18:15:50
【问题描述】:
我正在为一个小型 arduino 项目编写一个 16x2 LCD 的菜单。 快写完了,但是最后一个小问题没看懂。
以下(简化的)代码会产生问题:
int var1=0;
int var2=0;
typedef struct {
unsigned int item_value;
char item_name[17];
} Select_Item;
typedef struct {
char item_name[17];
int* variable;
Select_Item* list;
} Menu_Item;
Select_Item sel_one = { 0, "Selection 1" };
Select_Item sel_two = { 1, "Selection 2" };
Select_Item* sel_list[2] = { &sel_one, &sel_two };
Menu_Item menu_item1 = { "Item 1", &var1, NULL };
Menu_Item menu_item2 = { "Item 2", &var2, &sel_list };
Menu_Item* menu_list[2] = { &menu_item1, &menu_item2 };
最终出现以下错误:
sketch_feb08a.ino:24:53: error: cannot convert 'Select_Item* (*)[2]' to 'Select_Item*' in initialization
在代码中,我从变量中访问值并将其显示在显示器中,一旦编辑,我就可以将其写回变量。只要我只有数字要显示/编辑,这不是问题。 现在为了便于使用,我想添加某种选项菜单,用户可以在其中选择选项。应该显示 item_name,而不是原始值,但当然应该在幕后使用 item_value。 这就是我引入 Select_Item 结构的原因。
我不明白错误信息。这里有什么问题?
【问题讨论】:
-
错误很明显。
&sel_list是指向数组的指针,或Select_Item * (*)[2]。而Menu_Item::list是指向Select_Item或Select_Item *的指针。 -
您能推荐一个可编译的替代方案吗?
-
真的不清楚你要做什么......
-
我想在menu_item中有一个指向选择列表sel_list的指针。或者简而言之,我如何制作一个稍后可以在代码中访问的选项列表
-
由于数组衰减为指向其第一个元素的指针,因此您可以使用
sel_list而不使用地址 (&) 运算符。
标签: c++ pointers struct compiler-errors arduino