由于某种原因,下面的指示代码显示错误消息:“类型为“ const char **的值(当然应该仅是一个星号)”不能用于初始化类型为“ char”的实体”。我觉得这很奇怪,因为fname和lname似乎没有什么不同,但是它们并没有出现我所期望的错误。我也尝试将char phone变成char ** phone,但没有成功。有人可以让我知道问题是什么以及如何解决?
struct Name {
char fname[15];
char lname[15];
};
struct Info {
int grade;
char phone[15];
};
struct Mark {
int math;
int sci;
int eng;
};
struct Student {
Name n;
Info i;
Mark m;
};
int main()
{
Student class_list[MAX_CLASS_SIZE] = {
// Errors here V V V V V V V
{"Bob", "Smith"}, {11, "519-688-5168"}, {88, 75, 78}
};
}
答案 0 :(得分:0)
此
[0]8664.6194::2019-04-03 21:18:34.125 [MSNT_SystemTrace]
[0]8664.6194::2019-04-03 21:18:34.125 [MSNT_SystemTrace]
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
[0]0000.0000::2019-04-03 21:18:34.125 []***
如果定义和初始化单个 {"Bob", "Smith"}, {11, "519-688-5168"}, {88, 75, 78}
对象,则使用:
Student
但是,您正在尝试初始化Student student = {
{"Bob", "Smith"}, {11, "519-688-5168"}, {88, 75, 78}
};
对象的 array ,因此每个元素都必须放在花括号内:
Student
1:Student class_list[MAX_CLASS_SIZE] = {
{ {"Bob", "Smith"}, {11, "519-688-5168"}, {88, 75, 78} }
// 1 2 3 4
};
对象初始化程序。
2:Student
对象初始化程序。
3:Name
对象初始化程序。
4:Info
对象初始化程序。
话虽如此,您应该避免使用C字符串。请改用Mark
:
std::string