Класс C++ не распознает тип данных String

Я работаю над программой из своего учебника C++ и этого это в первый раз, когда я действительно столкнулся с проблемой. Я просто, может казаться, не вижу что не так здесь. Visual Studio говорит мне Ошибку: идентификатор "строка" не определен.

Я разделил программу на три файла. Заголовочный файл для спецификации класса, .cpp файл для реализации класса и основного программного файла. Это инструкции из моей книги:

Запишите класс под названием Автомобиль, который имеет переменные следующего члена:

год. int это содержит модельный год автомобиля.

сделать. A string это содержит делание из автомобиля.

скорость. int это содержит текущую скорость автомобиля.

Кроме того, класс должен иметь функции следующего члена.

Конструктор. Конструктор должен принять автомобиль year и make как аргументы и присваивают эти значения объекту year и make членские переменные. Конструктор должен инициализировать speed членская переменная к 0.

Средства доступа. Соответствующие функции средства доступа должны быть созданы, чтобы позволить значениям быть полученными от объекта year, make и speed членские переменные.

Существует больше инструкций, но они не необходимы, чтобы заставить эту часть работать.

Вот мой исходный код:

// File Car.h -- Car class specification file
#ifndef CAR_H
#define CAR_H
class Car
{
private:
    int year;
    string make;
    int speed;
public:
    Car(int, string);
    int getYear();
    string getMake();
    int getSpeed();
};
#endif


// File Car.cpp -- Car class function implementation file
#include "Car.h"

// Default Constructor
Car::Car(int inputYear, string inputMake)
{
    year = inputYear;
    make = inputMake;
    speed =  0;
}

// Accessors
int Car::getYear()
{
    return year;
}

string Car::getMake()
{
    return make;
}

int Car::getSpeed()
{
    return speed;
}


// Main program
#include <iostream>
#include <string>
#include "Car.h"
using namespace std;

int main()
{

}

Я ничего еще не записал в основной программе, потому что я не могу заставить класс компилировать. Я только связал заголовочный файл с основной программой. Заранее спасибо всем, кто не торопится для исследования этой проблемы для меня.

13
задан reallythecrash 20 May 2010 в 22:45
поделиться

3 ответа

Вы забыли # включить заголовок строки, и вам необходимо полностью указать свое использование от string до std :: string , исправленного кода должно быть.

// File Car.h -- Car class specification file
#ifndef CAR_H
#define CAR_H

#include <string>

class Car
{
private:
    int year;
    std::string make;
    int speed;
public:
    Car(int, string);
    int getYear();
    std::string getMake();
    int getSpeed();
};
#endif


// File Car.cpp -- Car class function implementation file
#include "Car.h"

// Default Constructor
Car::Car(int inputYear, std::string inputMake)
{
    year = inputYear;
    make = inputMake;
    speed =  0;
}

// Accessors
int Car::getYear()
{
    return year;
}

Вы можете поместить using namespace std; в начало Car.cpp, и это позволит вам использовать строку без квалификатора std :: в этом файле. Однако НЕ помещайте одно из них в заголовок, потому что это очень плохой моджо.

В качестве примечания вы всегда должны включать все, что требуется объявлению класса, в заголовок перед телом класса, вы никогда не должны полагаться на исходный файл клиента, включая файл (например, ) перед ним. включает ваш заголовок.

По поводу этой части вашей задачи:

Конструктор. Конструктор должен принимаю год машины и делаю как аргументы и присвоить эти значения год объекта и сделать член переменные. Конструктор должен инициализировать переменную члена скорости до 0.

Лучше всего использовать список инициализаторов в конструкторе, например:

// Default Constructor
Car::Car(int inputYear, string inputMake)
  : year(inputYear),
    make(inputMake),
    speed(0)

{

}
13
ответ дан 1 December 2019 в 20:42
поделиться

Я подозреваю, что вам нужна ваша #include в верхней файла, выше, где вы используете строку ] тип.

5
ответ дан 1 December 2019 в 20:42
поделиться

Вы должны использовать полное имя std :: string , или вы забыли включить заголовок . Или оба.

10
ответ дан 1 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: