Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 22.09.2017
Сообщений: 10

Указатель на класс не добавляется в вектор

16.09.2021, 20:44. Показов 725. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пишу класс, включающий в себя вектор указателей на этот класс. В конструкторе идёт push_back(this), в следствие которого в векторе оказывается 0 элементов. По какой-причине это происходит?
Хэдер:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <vector>
 
using std::vector;
 
class Clastergroup
{
public:
    Clastergroup(bool iemp);
    ~Clastergroup();
 
private:
    bool emp;
    int count;
    Clastergroup *identy;
    vector<Clastergroup*> parts;
};
Исходник:
C++ (Qt)
1
2
3
4
5
6
7
8
9
#include "clastergroup.h"
 
Clastergroup::Clastergroup(bool iemp)
{
    emp = iemp;
    count = 1;
    identy = this;
    parts.push_back(this);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2021, 20:44
Ответы с готовыми решениями:

Указатель на класс не добавляется в вектор
Здравствуйте. Написал класс, включающий в себя вектор указателей

Создать класс, полями есть динамический вектор(то есть указатель на вектор) его размер и идентификатор
Задание нужно создать класс, полями есть динамический вектор(то есть указатель на вектор) его размер та идентификатор не получается в...

Создать класс вектор, который имеет указатель на double
Создать абстрактный тип данных - класс вектор, который имеет указатель на double, число элементов и переменную состояния. Определить...

7
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,121
16.09.2021, 21:35
Цитата Сообщение от Sq21 Посмотреть сообщение
По какой-причине это происходит
нет, не происходит. Я попробовал.

У меня встречный вопрос - зачем в поле класса записывать указатель на самого себя? Да ещё не в одно поле, а в два.
0
0 / 0 / 0
Регистрация: 22.09.2017
Сообщений: 10
17.09.2021, 10:00  [ТС]
В точности так попробовали? У меня вообще не добавляются указатели на объекты этого класса внутри методов класса, первый раз с таким сталкиваюсь.

Зачем - пишу кластеризацию, нужно для объединения групп.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
17.09.2021, 10:04
Sq21, совершенно очевидно, что предоставленный код не имеет описанных вами проблем. Вероятно вы в реальности используете чуть другой код, в котором какая-то проблема есть.
Угадать что это за проблема не представляется возможным.
0
0 / 0 / 0
Регистрация: 22.09.2017
Сообщений: 10
17.09.2021, 10:17  [ТС]
Сейчас нет возможности перекопировать код, сижу с телефона, к компу подключать нельзя, однако класс именно такой, как я отправил. Создаётся объект как
C++ (Qt)
1
Clastergroup *ge = new Clastergroup(false);
.
Компилятор официальный Microsoft 12й.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
17.09.2021, 10:21
Sq21, я не спорю, что класс может быть именно такой. Но в вашем коде могут быть какие-то другие вещи, которые ломают поведение. Поэтому тут возможно всего несколько вариантов:
1) Вы предоставите полный оригинал кода;
2) Вы сделаете минимальный компилируемый пример на основе вашего кода, который воспроизводит проблему (в процессе этого вероятнее всего вы сами найдете ошибку);
3) Кто-то пальцем в небо угадает в чем у вас дело (но вероятность этого крайне мала).
0
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,121
17.09.2021, 10:21
Sq21, https://onlinegdb.com/EJpCemly8

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
34
#include <vector>
#include <iostream>
 
class Clastergroup
{
public:
    Clastergroup(bool iemp);
    ~Clastergroup(){};
//private:
    bool emp;
    int count;
    Clastergroup *identy;
    std::vector<Clastergroup*> parts;
};
 
Clastergroup::Clastergroup(bool iemp)
{
    emp = iemp;
    count = 1;
    identy = this;
    parts.push_back(this);
}
 
int main()
{
    Clastergroup item{false};
    std::cout<<item.parts.size()<<'\n';
    std::cout<<&item<<'\n';
    std::cout<<item.identy<<'\n';
    if(item.parts.size())
    {
        std::cout<<item.parts[0]<<'\n';
    }
}
1
0x7fffeae2c910
0x7fffeae2c910
0x7fffeae2c910
0
0 / 0 / 0
Регистрация: 22.09.2017
Сообщений: 10
17.09.2021, 10:25  [ТС]
Так, судя по всему, дурит отладчик, посмотрел на память - всё добавляется, хотя отладчик и отображает 0 элементов. Прошу прощения у тех, кто потратил время.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2021, 10:25
Помогаю со студенческими работами здесь

Создать класс вектор, содержащий указатель на unsigned long, размерность вектора
Создать класс вектор, содержащий указатель на unsigned long, размерность вектора. Класс имеет конструкторы по умолчанию, конструктор с...

Создать класс- вектор, который имеет указатель на тип определенный преподавателем и число элементов
Создать класс- вектор, который имеет указатель на тип определенный преподавателем и число элементов. Определить функцию которая выделяет...

Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния
Помогите пожалуйста, нужно написать код на с++ Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число...

Базовый класс вектор на плоскости, производный класс вектор в пространстве
Товарищи программисты! Прошу у вас помощи с этими задачами. Сам в программировании не понимаю, но заставляют делать. Вторая задача В...

Объяснить, как добавляется класс Person в класс People
Объясните пожалуйста этот код. public class People : ObservableCollection&lt;Person&gt; { public People() { ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru