【发布时间】:2019-08-25 16:48:14
【问题描述】:
由于某种原因,下面指示的代码出现错误读取,“类型为”const char **(当然只应该是一个星号)的值不能用于初始化类型为“char”的实体“”。我觉得这很奇怪,因为 fname 和 lname 似乎没有什么不同,但它们并没有像我预期的那样出现这样的错误。我也尝试将 char 手机制作成 char** 手机,但没有成功。有人可以让我知道问题是什么以及如何解决吗?
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}
};
}
【问题讨论】:
-
那是因为您在 C++ 中使用了 C 字符串。不要那样做。使用
std::string。 -
你需要另一组大括号,但实际上你需要一些构造函数。
-
后者是实际问题;前者的好建议(但如果不应用后者,仍然会给您留下错误)。 See it live.
-
MAX_CLASS_SIZE未定义 -
@NikosC。您的意思是在电话中使用字符串而不是 char[15] 吗?我试过了,它出现了同样的错误