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

Почему этот вектор остаётся пустым? - C++

Восстановить пароль Регистрация
 
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
19.01.2010, 00:51     Почему этот вектор остаётся пустым? #1
Есть такой класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
typedef std::vector <lab_Arr_t *> lab_Stack_t;
/* -------------------------------------------------------------------------- */
  class Pool {
     public:
        Pool () {
           // Creating global labels
           lab_Stack_t labels_stack;
           lab_Arr_t *global_labels = new  lab_Arr_t;
           labels_stack.push_back(global_labels);
        };
 
        lab_Arr_t *GetGlobLbls () {
           // Test
           std::cout << labels_stack.size();
           assert(!labels_stack.empty());
           // Test
           return labels_stack.front();};
 
     private:
        lab_Stack_t labels_stack;
  };
/* -------------------------------------------------------------------------- */
  extern Pool pool;
Где lab_Arr_t это тоже typedef, и является вектором из указателей на структуры:
C++
1
2
3
4
5
  typedef struct Label {
    // тут тело самой структуры
  } label_Named_t;
/* -------------------------------------------------------------------------- */
  typedef vector <label_Named_t *> lab_Arr_t;
Так вот у меня получается,что тестовый assert(!labels_stack.empty()) не проходит,то есть этот вектор остаётся пустым.Как так,туда же что-то положили с помощью push_back в конструкторе,а именно указатель на область выделенной памяти?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 00:51     Почему этот вектор остаётся пустым?
Посмотрите здесь:

C++ Здравствуйте, Почему не работает этот код?
C++ Почему не работает этот кусок программы?
C++ Почему этот код работает?
Глобальный вектор. Почему на выходе этот массив пуст? C++
C++ Почему не инициализируется вектор размером 10?
Объяснить, почему размер вектора остаётся нулевым C++
C++ Объяснить почему компилируется этот код (динамические массивы)
Как работает этот вектор построчно? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
19.01.2010, 00:56     Почему этот вектор остаётся пустым? #2
#pragma,

типичный код, за который надо отрывать руки, потому как диагностика его совсем не тривиальна.
у тебя локальная переменная labels_stack перекрывает переменную класса. и данные радостно кладутся не туда куда надо
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
19.01.2010, 00:58  [ТС]     Почему этот вектор остаётся пустым? #3
ААА!! точно,вот я дурень,спасибо )
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
19.01.2010, 00:59     Почему этот вектор остаётся пустым? #4
#pragma,

по ночам надо спать, а не код колбасить
Yandex
Объявления
19.01.2010, 00:59     Почему этот вектор остаётся пустым?
Ответ Создать тему
Опции темы

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