在类中使用char数组时从'char *'到'char'的无效转换

时间:2019-03-09 15:04:48

标签: c++ class

该类采用名称,职称(都存储在char数组中)和年龄。运行程序时,发生“从'char *'到'char'的无效转换。我相信我使用的char数组不正确,但是不确定是什么问题。使用字符串时,该程序可以完美运行。您能解释我做错了什么以及如何修正我的代码吗?还请说明错误是如何显示出问题的原因。

谢谢你。

头文件(emplyee.h)

#ifndef EMPLOYEE_H
#define EMPLOYEE_H

/*No need for passing arguments into the functions since they can
 * call the variables declared in the private access specifier. */

class Employee
{
private:
    char Name[20], Jobtitle[30]; //Why not working ?
    int Age;

public:
    Employee(char, int, char);
    char getname(); /*Could having the name of the function the same as the variables cause a problem ? Yes it will*/
    int getage();
    char getjobtitle();
};

#endif // EMPLOYEE_H

源文件(employee.cpp)

#include "employee.h"

Employee::Employee( char n[20], int a, char j[30] )
{
  Name = n; Age = a; Jobtitle = j;
}

char Employee::getname()
{
   return(Name);
}

int Employee::getage()
{
   return(Age);
}

char Employee::getjobtitle()
{
   return(Jobtitle);
}

Error messages print screen

3 个答案:

答案 0 :(得分:1)

避免使用char数组(在大多数情况下,即-03不足以满足您的要求)

使用std :: string。看起来就是这样。

Employee.h:

#ifndef EMPLOYEE_H
#define EMPLOYEE_H

#include <string>

class Employee{
    private:
        std::string Name, JobTitle;
        int Age;

    public:
        Employee(std::string Name, int age, std::string JobTitle);

        std::string getName();
        int getAge();
        std::string getJobTitle();
};

#endif 

Employee.cpp

#include "employee.h"
#include <string>

Employee::Employee(std::string n, int a, std::string j){
    Name = n;
    Age = a;
    JobTitle = j;
}

std::string Employee::getName(){
    return Name;
}

int Employee::getAge(){
    return Age;
}

std::string Employee::getJobTitle(){
    return JobTitle;
}

main.cpp:

#include "employee.h"
#include <iostream>

int main(){
    Employee e("Hemil", 16, "NA");

    std::cout << e.getName() << "\n"
          << e.getAge() << "\n"
          << e.getJobTitle() << "\n";
}

注意:这在Turbo C ++中不起作用

答案 1 :(得分:0)

char getname();    

意味着您将返回一个不正确的字符,因为

char Name[20]

是一个char数组,因此您可能希望将指针返回到该数组(类型为char *),因此原型应为

char* getname();

标题相同

答案 2 :(得分:0)

global

名称和Jobtitle是您应使用的char数组 enter code here strcpy(Name, n);

您的strcpy(Jobtitle, j);getname函数应写为: gettitle char *Employee::getname()