Как использовать строки в классе с ++ - PullRequest
0 голосов
/ 28 января 2020

У меня проблемы с использованием строковых переменных внутри класса в c ++. Я пытался использовать include, но это, похоже, не имеет никакого заметного эффекта. Вот содержимое файла заголовка, в котором объявлен класс:

#include <string.h>

#ifndef STUDENT_H
#define STUDENT_H

class Student
{
private:
    int iStudentAge;
    int iStudentBirthDay;
    int iStudentBirthMonth;
    int iStudentBirthYear;
    string sStudentName;
    string sStudentCourse;
public:
    Student();
    Student(int iValue1, int iValue2, int iValue3, int iValue4, string sValue5, string sValue6);
    void setAge(int iNewValue);
    int getAge();
    void setBirthDay(int iNewValue);
    int getBirthDay();
    void setBirthMonth(int iNewValue);
    int getBirthMonth();
    void setBirthYear(int iNewValue);
    int getBirthYear();
    void setName(string iNewValue);
    string getName();
    void setCourse(string iNewValue);
    string getCourse();
};

#endif // !STUDENT_H

Все указанные ошибки c относятся ко всем строкам, которые содержат строки, кроме строки включения.

Ответы [ 3 ]

6 голосов
/ 28 января 2020

<string.h> - это заголовочный файл C для обработки строк, заканчивающихся нулевыми байтами. std::string определено в заголовочном файле <string>.

Поэтому сначала измените ваше включение на правильный файл, затем вам нужно использовать префикс std:: для всех строк.

3 голосов
/ 28 января 2020

Для C ++ вы должны использовать соответствующую библиотеку #include <string> , а не #include <string.h>, которая является C библиотекой.

Для объявления переменных используйте область действия

std::string sStudentName;

или

using namespace std;

до того, как объявление класса для string будет распознано как тип.

Рекомендуется первый вариант, чтобы узнать, почему смотрите Почему «используется пространство имен std;» считается плохой практикой?

1 голос
/ 28 января 2020

В качестве компромисса между засорением «std ::» по всему файлу и использованием потенциально опасного «использования пространства имен std» вы можете написать:

using std::string;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...