typedef struct { int name; char tags[10][50]; } DietPlan;DietPlan a(1,global_var1);[Error] no matching function for call to 'DietPlan::DietPlan(int, char [10][50])'
时间: 2023-12-31 17:06:04 浏览: 128
上述代码中,定义了一个名为DietPlan的结构体,包含一个整型变量name和一个二维字符数组tags。问题出在这行代码上:
```c
DietPlan a(1, global_var1);
```
这行代码试图创建一个名为a的DietPlan类型的变量,并使用参数1和global_var1来初始化它。但是,这样的语法是错误的,因为结构体不是一个函数,不能像函数一样调用它来创建一个变量。
正确的做法是,声明一个DietPlan类型的变量,然后为它的成员赋值。例如:
```c
DietPlan a;
a.name = 1;
strcpy(a.tags[0], "tag1");
strcpy(a.tags[1], "tag2");
// 依次类推,为tags数组中的每个元素赋值
```
在上述代码中,首先声明了一个名为a的DietPlan类型的变量,然后为它的成员name和tags赋值。由于tags是一个二维字符数组,需要使用strcpy函数为每个元素赋值。
相关问题
char global_var1[10][50] = {"天然", "无添加", "全谷物", "蔬果", "均衡饮食", "低盐", "低糖", "水分充足", "适量油脂"};typedef struct { int name; char tags[10][50]; } DietPlan;DietPlan a(1,global_var1);[Error] no matching function for call to 'DietPlan::DietPlan(int, char [10][50])'
在C++中,结构体不能像函数一样直接调用来创建变量。正确的做法是使用结构体名加上变量名的方式来声明一个变量,然后为它的成员赋值。所以,正确的写法应该是:
```c++
char global_var1[10][50] = {"天然", "无添加", "全谷物", "蔬果", "均衡饮食", "低盐", "低糖", "水分充足", "适量油脂"};
typedef struct {
int name;
char tags[10][50];
} DietPlan;
DietPlan a = {1, global_var1};
```
在上述代码中,首先定义了一个二维字符数组global_var1,并初始化了它的每个元素。然后定义了一个名为DietPlan的结构体,包含一个整型变量name和一个二维字符数组tags。最后,定义了一个名为a的DietPlan类型的变量,并使用{name, tags}的方式为它的成员赋值。
阅读全文