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

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

Войти
Регистрация
Восстановить пароль
 
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
#1

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

19.01.2010, 00:51. Просмотров 380. Ответов 3
Метки нет (Все метки)

Есть такой класс:
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 в конструкторе,а именно указатель на область выделенной памяти?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 00:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему этот вектор остаётся пустым? (C++):

Глобальный вектор. Почему на выходе этот массив пуст? - C++
юзаю либу вектор. почему на выходе этот массив пуст? std::vector&lt;int&gt; qw;//global int main() { int i=1; qw.push_back(i); ...

Объяснить, почему размер вектора остаётся нулевым - C++
Доброго времени суток. Столкнулся с проблемой пр работе с вектором. Нужно считать из файла строки вида любая строка = любая строка ...

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

Как работает этот вектор построчно? - C++
Есть код под консольку визуал студио 2013 с++.Суть во всех последовательностях позитивных чисел изменяет порядок элементов на...

Почему этот код работает? - C++
Почему этот код работает без единого предупреждения? Мы заведомо вылазим за границу массива. Известно что если размерность массива n,...

Здравствуйте, Почему не работает этот код? - C++
Здравствуйте.Прошу помочь.Почему не работает этот код? std::ifstream input_file(&quot;http://nanshakov.16mb.com/developed/test/hash.txt&quot;); ...

3
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
19.01.2010, 00:56 #2
#pragma,

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

по ночам надо спать, а не код колбасить
1
19.01.2010, 00:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2010, 00:59
Привет! Вот еще темы с ответами:

Почему не работает этот кусок программы? - C++
Дана цепочка 00000101001010 она записана в массив, каждая цифра отдельный элемент. нужно инвертировать, не используя специальных...

Объяснить почему компилируется этот код (динамические массивы) - C++
Что это =-O int*array = new int; То есть почему компилится? anti-k, пожалуйста, прочитайте правила форума и постарайтесь...

Почему не инициализируется вектор размером 10? - C++
Хотел создать вектор размером 10, но visual studio выдаёт ошибку и при этом размер вектора равен 0, хотя я явно указал, что должно быть 10:...

Почему не сортируется вектор структур? - C++
Выводится ошибка c:\qtsdk\mingw\bin\..\lib\gcc\mingw32\4.4.0\include\c++\bits\stl_algo.h:89: error: passing 'const Task' as 'this' argument...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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