Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rainy
2 / 2 / 0
Регистрация: 08.03.2014
Сообщений: 36
#1

Не инициализированные указатели - C++

28.05.2014, 11:04. Просмотров 203. Ответов 4
Метки нет (Все метки)

Добрый день, пишу небольшую игру на движке, появилась проблема

main.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include “mainClass.h”
int main()
{
bool endless = true;
mainClass mainObject;
mainObject.initialize();
while(endless)
{   
    mainObject.run();
}
return 0;
}


mainClass.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#inlcude  “Enums.h”
#include “secondClass.h”
class mainClass
{
public:
mainClass() // конструктор
{
}
void Initialize()
{   
        secondObject = new secondClass[MAX] //MAX – это константа объявленная в enums.h
}
void run()
{
    for(int i = 0; i < MAX; i++)
        {
          secondObject[i].firstMetod();
        }
        …
       for(int i = 0; i < MAX; i++)
       {
          secondObject[i].secondMetod(); // ругается на этот метод
       }
}
private:
    secondClass* secondObject;
}


secondClass.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include “Enums.h”
 
class secondClass
{
public:
secondClass() //конструктор
{
}
void firstMetod()
{
    speed = 10;
        speedPtr = &speed;
    health = 15;
        healthPtr = &health;
}
void secondMetod()
{
if(*speedPtr < 15) //конкретно ругается вот здесь, если закоментить это условие
{
    …
}
if(*healthPtr < 20) // то ошибка вылетит здесь
{
    …
}
}
private:
    int speed;
        int* speedPtr;
    int health;
        int* healthPtr;
}


Все это сильно упрощенная версия моего кода, ошибка вылетает когда доходит до проверки указателей. Ругается на ошибку доступа, я своими методами проверил эти указатели, и выяснил, что они хранят значение -8................ Т.е рандомное число
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 11:04     Не инициализированные указатели
Посмотрите здесь:

C++ Указатели
C++ указатели
Указатели C++
C++ Указатели
Указатели C++
C++ указатели
Указатели C++
C++ Указатели
C++ Указатели
Указатели C++
C++ Указатели
C++ Среднее арифметическое, не видит инициализированные переменные

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4459 / 3797 / 1284
Регистрация: 14.04.2014
Сообщений: 14,906
28.05.2014, 11:11     Не инициализированные указатели #2
1. Проверь отладчиком, как срабатывает firstMethod().
2. Зачем тут вообще указатели? Используй speed и health напрямую.
Rainy
2 / 2 / 0
Регистрация: 08.03.2014
Сообщений: 36
28.05.2014, 12:15  [ТС]     Не инициализированные указатели #3
указатели нужны(это очень упрощенная версия кода)

Добавлено через 2 минуты
а что значить проверить как работает метод? Я проверял инициализацию переменных, они инициализируются
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
28.05.2014, 12:28     Не инициализированные указатели #4
поставь брейкпойнт в конце first method и в начале second method
Rainy
2 / 2 / 0
Регистрация: 08.03.2014
Сообщений: 36
28.05.2014, 12:45  [ТС]     Не инициализированные указатели #5
firstMetod обходит, первый срабатывает secondMetod, но в нем стоит if(isBuilt == true), а isBuilt = true в конце метода firstMetod, а изначально isBuilt = false. По идее secondMetod должен обойтись, т к не проходит условие

Добавлено через 7 минут
переменные speed и health инициализируются только для последнего элемента массива secondObject, буду дальше думать
Yandex
Объявления
28.05.2014, 12:45     Не инициализированные указатели
Ответ Создать тему
Опции темы

Текущее время: 04:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru