C++ 此指针错误没有与参数列表匹配的构造函数实例

C++ 此指针错误没有与参数列表匹配的构造函数实例,c++,constructor,this-pointer,C++,Constructor,This Pointer,请帮助错误:没有与参数列表匹配的构造函数实例。 还请帮助解释“strcpy(this->name,name);” 班级学生{ 字符名[50]; 查氏[50]; 智力年龄; 公众: 学生(姓名[],姓氏[],年龄){ strcpy(this->name,name);//请解释这行是什么意思? strcpy(这个->姓氏,姓氏); 这个->年龄=年龄; } 无效显示(){ 库特 请帮助错误:没有与参数匹配的构造函数实例 名单 与此相反: Student(char name[], char surna

请帮助错误:没有与参数列表匹配的构造函数实例。 还请帮助解释“strcpy(this->name,name);”

班级学生{
字符名[50];
查氏[50];
智力年龄;
公众:
学生(姓名[],姓氏[],年龄){
strcpy(this->name,name);//请解释这行是什么意思?
strcpy(这个->姓氏,姓氏);
这个->年龄=年龄;
}
无效显示(){
库特
请帮助错误:没有与参数匹配的构造函数实例
名单

与此相反:

Student(char name[], char surname[], int age) {
试试这个:

Student(const char *name, const char *surname, int age) {
它抱怨是因为
char
指针与
const char
的指针不匹配

strcpy(this->name,name);
//请解释这一行的含义 意味着什么

它将字符串从
名称
(传递的参数)复制到另一个
名称
(这是
类学生
的一部分)。由于两者都被称为
name
,因此不明确。在这种情况下,
name
引用参数,
this->name
用于引用
类学生
中的字段

更一般地说,
这是一个指向调用函数的对象的指针

请帮助错误:没有与参数匹配的构造函数实例 名单

与此相反:

Student(char name[], char surname[], int age) {
试试这个:

Student(const char *name, const char *surname, int age) {
它抱怨是因为
char
指针与
const char
的指针不匹配

strcpy(this->name,name);
//请解释这一行的含义 意味着什么

它将字符串从
名称
(传递的参数)复制到另一个
名称
(这是
类学生
的一部分)。由于两者都被称为
name
,因此不明确。在这种情况下,
name
引用参数,
this->name
用于引用
类学生
中的字段


一般来说,
这个
是指向调用函数的对象的指针。

1)您显示的代码,.2)strcpy
的文档中解释了它的作用。@AlgirdasPreidžius您需要打开警告,那么ISO C++11不允许从字符串文字转换为“char*”@NathanOliver我认为在C上是这样的++11及以后这是一个错误,而不是警告,因为我用C++14编译,我认为如果有任何这样的错误,它就不会编译。:/诅咒你的g++,和你的非标准扩展!@AlgirdasPreidžius如果它有帮助的话,我在编译时总是使用
-Wall-pedantic
。我还使用Wandbox或coliru,正如你实际指定的那样所有选项并查看所有警告。
-Wall-Wextra-Werror-pedantic
ftw1)您显示的代码,.2)strcpy
的文档中解释了strcpy的功能。@AlgirdasPreidžius您需要打开警告,然后ISO C++11不允许从字符串文字转换为“char*”@NathanOliver我认为是打开的C++11和更高版本这是一个错误,而不是警告,因为我用C++14编译,我认为如果有任何这样的错误,它不会编译。:/诅咒你的g++,和你的非标准扩展!@AlgirdasPreidžius如果它有帮助的话,我在编译时总是使用
-Wall-pedantic
。我还可以使用Wandbox或coliru,因为你可以指定y所有选项并查看所有警告。
-Wall-Wextra-Werror-pedantic
ftw感谢您的回答…我已经尝试了您的代码,它做得很好,但除此之外,它还需要从strcpy更改为strcpy。它现在可以工作了。感谢您对strcpy的解释…为了避免歧义,我记得我的老师的课使用下划线:\u na我(参数已传递)。感谢您的回答…我已尝试了您的代码,它做得很好,但除此之外,它还需要从strcpy更改为strcpy_s。它现在可以工作了。还感谢您对strcpy的解释…为了避免歧义,我记得我的老师的课中使用下划线:_name(传递的参数)。