从char到char编译器错误的转换无效

时间:2015-01-07 18:20:14

标签: c++

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

2 个答案:

答案 0 :(得分:2)

您已声明您的函数参数属于char[]类型,但您正在使用char数组的元素调用该函数,该数组的类型为{ {1}}。仅使用charName

调用该函数

您的代码在使用数组方面遇到了其他问题,但这将解决有问题的编译器错误。它不会解决你将要看到的其他问题......

我会指出其中一些......

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); 

最后,我想说评论不是\\而且在可能的情况下尝试并尊重语言的命名约定是一件好事。