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

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

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

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

28.05.2014, 11:04. Просмотров 214. Ответов 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++
Привет, ребят! Есть программа- вычисление среднее арифм. чисел от 1 до 5000. Проверка на принадлежность границе вынесена в отдельную...

Указатели - C++
подскажите, что значит запись **A

Указатели - C++
Задача: Если в матрице есть две одинаковых строки, то упорядочить столбцы матрицы по неубыванию суммы положительных элементов. Память под...

Указатели - C++
Уважаемые форумчане, столкнулся с элементарной проблемой, но не могу понять как решить. Вот код: template&lt;class T&gt; struct S { ...

Указатели - C++
Как эту программу можно записать через указатели? #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int min(int ,int);...

Указатели - C++
Для чего нужны указатели? Можно же и одними переменными обойтись. Зачем нужны адреса переменных?

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

Добавлено через 2 минуты
а что значить проверить как работает метод? Я проверял инициализацию переменных, они инициализируются
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
28.05.2014, 12:28     Не инициализированные указатели #4
поставь брейкпойнт в конце first method и в начале second method
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 12:45     Не инициализированные указатели
Еще ссылки по теме:

Указатели - C++
Написать программу на языке C Задание: введите с клавиатуры 3 числа и выведите их на экран в порядке возрастания. Программу написать с...

Указатели - C++
Здравствуйте! Так сложилось что я не понимаю как использовать указатели, всвязи с этим не могу двигаться дальше по изучению С++. ?:...

Указатели в c++ - C++
Задача: Дан текст, заканчивающийся точкой. Напечатать этот текст, удалив из него все цифры и знаки «+» или «–». Попробовала написать...

Указатели - C++
С одномерным массивом, состоящим из n вещественных элементов, вы-полнить следующее: Преобразовать массив таким образом, чтобы сначала...


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

Или воспользуйтесь поиском по форуму:
Rainy
2 / 2 / 0
Регистрация: 08.03.2014
Сообщений: 41
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     Не инициализированные указатели
Ответ Создать тему
Опции темы

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