Felix Mensah Ответов: 4

Тип возврата для возврата всей строки


У меня есть этот код, и он возвращает функцию-член как написано, но возвращает только последний символ emp_name.
любая помощь будет высоко оценена.

Что я уже пробовал:

#include <iostream>

using namespace std;

class emp {
public:

	int getInfo(char emp_name, int emp_id_number, int emp_age) {
		cout << "Employee Name: " << emp_name << "\n";
		cout << "Employee Id Number: " << emp_id_number << "\n";
		cout << "Employee Age: " << emp_age;
	}
};
int main() {
	emp emp1;
	emp1.getInfo('Felix', 635932, 23);
}

nv3

Что заставляет вас думать, что тип char для emp_name может содержать целую символьную строку? Он содержит только один символ. Откройте учебник по C++ и начните читать первые 10 страниц. Затем попробуйте еще раз.

Felix Mensah

спасибо за совет.

4 Ответов

Рейтинг:
33

Richard MacCutchan

int getInfo(char emp_name, int emp_id_number, int emp_age) {

Вы объявили emp_name параметр в виде одного символа, а не символьной строки. Так и должно быть:
int getInfo(char* emp_name, int emp_id_number, int emp_age) { // char*


Felix Mensah

это сработало, спасибо. Мне пришлось также заключить Феликса в двойные кавычки
#include <iostream>

использование пространства имен std;

класс emp {
общественный:

int getInfo(char* emp_name, int emp_id_number, int emp_age) {
cout << "имя сотрудника:" < & lt; emp_name << "\n";
соиь <&ЛТ; "идентификационный номер сотрудника:" &ЛТ;&ЛТ; emp_id_number &ЛТ;&ЛТ; "\Н";
cout << "возраст сотрудника:" < & lt; emp_age;
}
};
тап_п() {
emp emp1;
emp1. getInfo ("Феликс", 635932, 23);
}

Рейтинг:
25

Jochen Arndt

Вероятно, вы хотите передать строку a в getInfo() но на самом деле вы передаете один символ.

Измените эти две строки:

// Must be char* here
int getInfo(char *emp_name, int emp_id_number, int emp_age)

// Must pass a string here using double quotes
emp1.getInfo("Felix", 635932, 23);


Вы определили getInfo() чтобы вернуть int но у тебя нет return заявление.

Я предлагаю использовать высокий уровень предупреждения при компиляции (- Wall с G++, /W4 в настройках проекта с VS). Тогда вы получили бы по крайней мере два предупреждения для вашего кода.


Felix Mensah

это сработало спасибо
#include <iostream>

использование пространства имен std;

класс emp {
общественный:

int getInfo(char* emp_name, int emp_id_number, int emp_age) {
cout << "имя сотрудника:" < & lt; emp_name << "\n";
соиь <&ЛТ; "идентификационный номер сотрудника:" &ЛТ;&ЛТ; emp_id_number &ЛТ;&ЛТ; "\Н";
cout << "возраст сотрудника:" < & lt; emp_age;
}
};
тап_п() {
emp emp1;
emp1. getInfo ("Феликс", 635932, 23);
}

Рейтинг:
13

Felix Mensah

#include <iostream>

using namespace std;

class emp {
public:

	int getInfo(char* emp_name, int emp_id_number, int emp_age) {
		cout << "Employee Name: " << emp_name << "\n";
		cout << "Employee Id Number: " << emp_id_number << "\n";
		cout << "Employee Age: " << emp_age;
	}
};
int main() {
	emp emp1;
	emp1.getInfo("Felix", 635932, 23);
}


Рейтинг:
1

Member 13454019

не используйте вызов по значению, попробуйте использовать вызов по ссылке.
Ваша функция ожидает значение char, а не строку.

int getInfo(char* emp_name, int emp_id_number, int emp_age)