Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в std::vector 
V
    Опции темы
MaxS
Дата 30.3.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Есть несколько классов использующих std::vector. Все они компилируются и работают, кроме одного, который при попытке что-то сделать с его вектором выдает ошибку:

An unhandled exception of type 'System.NullReferenceException' occurred in Lanem.exe
Additional information: Object reference not set to an instance of an object.
При ошибке указывает сюда:
Код

    size_type size() const
        {    // return length of sequence
        return (_Myfirst == 0 ? 0 : _Mylast - _Myfirst);       //<=======
        }


Выбросил из класса все что можно было, сделал вектор int, но все равно то же самое. 
Использую студию 2005 и Win Forms. Класс используется в форме.
Код класса:
Код

//.h
    class GlobalMacBase
    {
    public:
        GlobalMacBase(){};
        ~GlobalMacBase(){};
        Mac * NewMac(void);
    private:
        std::vector<int> macbase;        
    };
//.срр
Mac * GlobalMacBase::NewMac(void)
{
    Mac * newmac = new Mac();
    macbase.push_back(3);              //ошибка!!!
    return newmac;
}


Из за чего это и что можно сделать?
PM MAIL   Вверх
zim22
Дата 30.3.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



MaxS, а я вот так сделал и нет ошибки
Код
#include <vector>

   class GlobalMacBase
    {
    public:
        GlobalMacBase(){};
        ~GlobalMacBase(){};
        int * NewMac(void);
    private:
        std::vector<int> macbase;        
    };
//.срр
int * GlobalMacBase::NewMac(void)
{
    //Mac * newmac = new Mac();
    macbase.push_back(3);              //ошибка!!!
    return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
  GlobalMacBase b;
  b.NewMac();
    return 0;
}






--------------------
PM MAIL   Вверх
Andrey44
Дата 30.3.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



MaxS, 
Цитата(MaxS @  30.3.2009,  13:54 Найти цитируемый пост)
Выбросил из класса все что можно было, сделал вектор int, но все равно то же самое. 
Использую студию 2005 и Win Forms. Класс используется в форме.
Код класса:
Код

//.h
    class GlobalMacBase
    {
    public:
        GlobalMacBase(){};
        ~GlobalMacBase(){};
        Mac * NewMac(void);
    private:
        std::vector<int> macbase;        
    };
//.срр
Mac * GlobalMacBase::NewMac(void)
{
    Mac * newmac = new Mac();
    macbase.push_back(3);              //ошибка!!!
    return newmac;
}

    


У меня все скомпилилось



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Dmi3ev
Дата 30.3.2009, 14:22 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

Из за чего это и что можно сделать? 

эта ошибка возникает, когда ты пытаешься обратиться к неинициализированному объекту... поэтому смотри, где ты там накосячил...


--------------------

PM MAIL   Вверх
bsa
Дата 30.3.2009, 16:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



MaxS, как сказал Dmi3ev, у тебя скорее всего есть использование объекта до инициализации (перед new) или после уничтожения (после delete).
PM   Вверх
Anikmar
Дата 30.3.2009, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



MaxS, 
Покажите конструктор класса Mac

PM MAIL ICQ   Вверх
MaxS
Дата 30.3.2009, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Спасибо всем ответившим. 
Проблема решилась изменением конструктора класса использующего GlobalMacBase и танцами с бубном в форме.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.