void Emplyee::setname (char Name[50])
{ name [50] = Name [50] ; }
void Emplyee::setadress (char Adress [100])
{ adress [100] = Adress [100] ; }
Number.setname (Name [50]); \\ Error in this Line
Number.setadress (Adress [100]); \\ Error in this Line
答案 0 :(得分:2)
您已声明您的函数参数属于char[]
类型,但您正在使用char数组的元素调用该函数,该数组的类型为{ {1}}。仅使用char
和Name
您的代码在使用数组方面遇到了其他问题,但这将解决有问题的编译器错误。它不会解决你将要看到的其他问题......
我会指出其中一些......
Adress
此外,与地址相同。
void Emplyee::setname (char Name[50])
{
name [50] = Name [50] ; // this line won't do what you think it does. (look at strcpy...)
// ^ ^
// |-----------|------ also, subscript out of bounds...
}
答案 1 :(得分:1)
name [50] = Name [50] ;
这不会做你认为它做的事情,它会用Name的元素51覆盖name的元素51。它不会复制整个数组,只是一个元素。这也可能是缓冲区溢出错误。
这整个代码表明你不了解数组,我认为你现在使用std :: string的麻烦较少。 以下是基于您所写内容的简单示例:
#include <string>
class Emplyee{
std::string address, name;
public:
void setname (std::string Name)
{ name = Name ; }
void setadress (std::string Adress)
{ adress = Adress ; }
};
Emplyee Number;
Number.setname ("AAAA");
std::string Address = "Your address here";
Number.setadress (Address);
最后,我想说评论不是\\而且在可能的情况下尝试并尊重语言的命名约定是一件好事。