该类采用名称,职称(都存储在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);
}
答案 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()
。