【发布时间】:2018-04-01 03:11:05
【问题描述】:
我在编写一个简单的函数时遇到了这个错误。这是我的功能说明。
string studentName;
string courseTaken[3];
void setStudent(string, string[]);
void Student::setStudent(string n, string a[])
{
studentName= n;
courseTaken = a;
}
这是我得到的错误:
在此行 courseTaken = a; 上,将 string* 分配给字符串 [3] 中的类型不兼容;
在我的代码中,我从未声明过任何指针或字符。
我不太明白这里出了什么问题。
【问题讨论】:
-
使用
std::array或std::vector。这不是 C。 -
规范由讲师提供。可以解释一下这不是 C 是什么意思吗?
-
C 数组不能这样工作。当你将它传递给一个函数时,你只是传递了一个指向第一个元素的指针。函数声明与
void Student::setStudent(string n, string *a)完全相同。通过“这不是 C”,@user202729 意味着您应该使用 C++ 容器而不是 C 数组,这有一些不直观的东西,尤其是当您尝试将它传递给函数时。他/她可能指的是在 C++ 内容之前教 C 内容的常见不良做法。 -
你能改变什么,教练坚持什么不能改变?如果你不能改变任何东西,你就不能修复任何东西。