Так что проблема в том, что я пытаюсь использовать переменную speed
в цикле. Ошибка, которую я привел: используется неинициализированная локальная переменная ‘speed’. Странно то, что я уже объявил скорость как int раньше.
Я включаю заголовочный файл и 2 других файла, связанных с этим проектом. Поскольку задействовано несколько файлов, я использую ссылку на pastebin для всех из них, но здесь также будет присутствовать код UseCar.cpp.
Car.h http://pastebin.com/xn8dnzrH
Car.cpp http://pastebin.com/QYrXDMfe
UseCar.cpp http://pastebin.com/GX8j2vPU
#include "stdafx.h"#include "Car.h"#include "Car.cpp"#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main(){
Car dealer;// Creates a new Car object
int yearModel;// Local variables for model year
int speed;// Local variables for speed
string make;// Names are kept the same to avoid confusion
// Calls the accelerate function 5 times and displays the results after each iteration
for (int i = 0; i < 5; ++i){
dealer.accelerate(speed);
cout << "The current speed is: " << dealer.getSpeed() << endl;
}
cout << "We are now braking the car" << endl;
// Calls the brake function 5 times and displays the results after each iteration
for (int i = 0; i < 5; ++i){
dealer.brake(speed);
cout << "The current speed is: " << dealer.getSpeed() << endl;
}
}
Вы определили speed
, но вы не дали ему начальное значение. «Авто» переменные, в основном те, которые находятся в стеке, ни к чему не инициализируются. Единицы «статической длительности хранения» инициализируются нулями. Статическая длительность хранения включает единицы в «области имен» (которая включает в себя глобальные переменные), статические локальные переменные и члены-статические данные.
Здесь есть ряд вопросов. Во-первых, вы определяете класс, который вы хотите сделать общедоступным, то есть доступным в других исходных файлах, но вы определяете его в cpp
исходный файл, а не заголовок. Если вам нужно #include
cpp
файл, вы делаете что-то не так. Это нормально, чтобы определить классы в cpp
файлы, если только содержимое этого файла должно знать, что они есть (это часто встречается в PIMPL
дизайн), но это не тот случай, здесь. Поместите определение своего класса в свой Car.h
и, вообще говоря никогда не включайте файл cpp.
Теперь, это не отвечает вашей первоначальной проблеме относительно speed.
Простое правило всегда следовать всегда инициализировать все переменные будь то локальные или глобальные или членские переменные. Это позволит избежать множества ошибок, с которыми вы можете столкнуться в c ++.