Неинициализированная локальная переменная, используемая даже при объявлении

Так что проблема в том, что я пытаюсь использовать переменную 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;
}
}

-1

Решение

Вы определили speed, но вы не дали ему начальное значение. «Авто» переменные, в основном те, которые находятся в стеке, ни к чему не инициализируются. Единицы «статической длительности хранения» инициализируются нулями. Статическая длительность хранения включает единицы в «области имен» (которая включает в себя глобальные переменные), статические локальные переменные и члены-статические данные.

1

Другие решения

Здесь есть ряд вопросов. Во-первых, вы определяете класс, который вы хотите сделать общедоступным, то есть доступным в других исходных файлах, но вы определяете его в cpp исходный файл, а не заголовок. Если вам нужно #include cpp файл, вы делаете что-то не так. Это нормально, чтобы определить классы в cpp файлы, если только содержимое этого файла должно знать, что они есть (это часто встречается в PIMPL дизайн), но это не тот случай, здесь. Поместите определение своего класса в свой Car.h и, вообще говоря никогда не включайте файл cpp.

Теперь, это не отвечает вашей первоначальной проблеме относительно speed. Простое правило всегда следовать всегда инициализировать все переменные будь то локальные или глобальные или членские переменные. Это позволит избежать множества ошибок, с которыми вы можете столкнуться в c ++.

1

По вопросам рекламы [email protected]