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

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

Войти
Регистрация
Восстановить пароль
 
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
#1

Не хочет реализоваться класс - C++

30.04.2011, 13:38. Просмотров 363. Ответов 8
Метки нет (Все метки)

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
class sell
{
public:
       int tt(void)
       {
        return 1;
       }
};
 
class test
{
public:
    test(void)
        {
            for(int i = 0; i < 10; i++)
                this->sellsl[i] = new sell;
        }
 
        void run(void)
        {
            int k = sellsl[2]->tt(); 
        }
...
...
...
private:
    sell* sells[10];
};
Код примерное такой. У класса test все функции работают хорошо, кроме run.
Пишет что участок памяти не может быть read и т.д. Не могу понять почему... this->sellsl[i] = new sell; - я же вроде все правильно сделал..
Можете помочь? Все утро голову себе ломаю и не знаю в чем дело.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
30.04.2011, 13:44     Не хочет реализоваться класс #2
Буква лишняя
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.04.2011, 16:08     Не хочет реализоваться класс #3
Рекомендую читать сообщения об ошибках.
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
04.05.2011, 12:02  [ТС]     Не хочет реализоваться класс #4
Да не. Это я пример написал и уже в самом примере сделал ошибку. Сейчас покажу сам док.

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
33
// Файл menu_shop.h
#include "items.h"
#include <sstream>
#include <string>
 
class menu_shop
{
public:
    ...
    ...
    ...
private:
    bool buy(User* user,std::string msg);
    Items * items[20];
};
 
...
...
...
 
menu_shop::menu_shop(void)
{
    for(int i = 0; i < 10; i++)
        this->items[i] = new Items(i);
}
 
bool menu_shop::sell(User* user,std::string msg)
{
    std::ostringstream idd;
    idd << items[1]->id;
    say(MC_COLOR_RED + "<<-- Item id: " + MC_COLOR_GREEN + idd.str(),user);
    say("    9. Exit",user);
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Файл items.h
#include <string>
 
class Items
{
public:
    Items(int namber);
    int id;
    int namber;
    std::string name;
private:
};
 
#include "items.h"
 
Items::Items(int n)
    :
    id(n)
    {
    }
Немножко сократил код.
При открытии функцию buy выводит ошибку: "Функция по адресу такому-то не может обратится к памяти по адресу такому-то. Память не может быть реал и т.д." .
Т.е. не может найти переменную items[1]->id. Но почему? И же в конструкторе сделал:

for(int i = 0; i < 10; i++)
this->items[i] = new Items(i);
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.05.2011, 12:14     Не хочет реализоваться класс #5
items[20], но инициализируешь только 10 из них.
Если проблема в методе buy, то где его код? По ошмётку кода сложно что-либо сказать.
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
04.05.2011, 12:54  [ТС]     Не хочет реализоваться класс #6
Ой перепутал. НЕ buy, а sell

C++
1
2
3
4
5
6
7
bool menu_shop::sell(User* user,std::string msg)
{
        std::ostringstream idd;
        idd << items[1]->id; // во тут почему-то не пашет.
        say(MC_COLOR_RED + "<<-- Item id: " + MC_COLOR_GREEN + idd.str(),user);
        say("    9. Exit",user);
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.05.2011, 13:08     Не хочет реализоваться класс #7
Падает прям с индексом Одын? Поставь прерывание в конструкторе и убедись, что создаётся именно этим конструктором. Такая ошибка возникает при обращении по неинициализированному указателю.
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
04.05.2011, 13:30  [ТС]     Не хочет реализоваться класс #8
C++
1
2
3
4
5
6
7
8
bool menu_shop::sell(User* user,std::string msg)
{
        items[1] = new Items(1);
        std::ostringstream idd;
        idd << items[1]->id; // во тут почему-то не пашет.
        say(MC_COLOR_RED + "<<-- Item id: " + MC_COLOR_GREEN + idd.str(),user);
        say("    9. Exit",user);
}
Тоже ошибка!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2011, 13:36     Не хочет реализоваться класс
Еще ссылки по теме:

Класс (почемуто не хочет найти человека у которого бал выше 75) C++
НЕ хочет компилировать C++
C++ Переменная не хочет инициализироваться
Не хочет работать C++
C++ Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
04.05.2011, 13:36     Не хочет реализоваться класс #9
koka3000, new надеюсь не переопределен?
И какая ошибка конкретнеее?
Yandex
Объявления
04.05.2011, 13:36     Не хочет реализоваться класс
Ответ Создать тему
Опции темы

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