Я работаю над программой из своего учебника 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()
{
}
Я ничего еще не записал в основной программе, потому что я не могу заставить класс компилировать. Я только связал заголовочный файл с основной программой. Заранее спасибо всем, кто не торопится для исследования этой проблемы для меня.
Вы забыли # включить заголовок строки, и вам необходимо полностью указать свое использование от 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)
{
}
Я подозреваю, что вам нужна ваша #include
в верхней файла, выше, где вы используете строку
] тип.
Вы должны использовать полное имя std :: string
, или вы забыли включить заголовок
. Или оба.