Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Alvin Seville
 Аватар для Соколиный глаз
346 / 276 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Почему выскакивает ошибка In instantiation of 'void stack_t<T>::println() const [with T = int]': - строка 165?

24.02.2019, 08:49. Показов 2878. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка:
In instantiation of 'void stack_t<T>:rintln() const [with T = int]': - строка 165
Почему она пропадает, если поставить const после print у stack_t<T>?

Кликните здесь для просмотра всего текста
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream>
#include <stdexcept>
#include <vector>
 
using namespace std;
 
// Узел стека.
template<typename T>
class node_t
{
private:
    void init(T value, node_t<T>* ptr_next)
    {
        this->value = value;
        this->ptr_next = ptr_next;
    }
    
public:
    T value;
    node_t<T>* ptr_next;
    
    node_t()
    {
        init(0, NULL);
    }
    
    node_t(T value, node_t<T>* ptr_next)
    {
        init(value, ptr_next);
    }
    
    node_t(const node_t<T>& target)
    {
        init(target->value, target->ptr_next);
    }
    
    ~node_t()
    {
        delete this;
    }
    
    // Выводит данные узла.
    void print() const
    {
        cout << value;
    }
    
    // Выводит данные узла и переходит на новую строку.
    void println() const
    {
        print();
        cout << endl;
    }
};
 
// Стек.
template<typename T>
class stack_t
{
private:
    node_t<T>* ptr_head;
    int count;
 
    void init()
    {
        ptr_head = NULL;
        count = 0;
    }
    
    void throw_if_empty() const
    {
        if (count == 0)
            throw out_of_range("count был равен 0");
    }
 
public:
    // Возвращает количество элементов стека.
    int get_count() const
    {
        return count;
    }
    
    stack_t()
    {
        init();
    }
    
    stack_t(int count, T* array)
    {
        init();
        T* ptr_current = array;
        for (int i = 0; i < count; i++)
        {
            push(*ptr_current);
            ptr_current++;
        }
    }
    
    stack_t(vector<T>* vector)
    {
        init();
        for (int i = 0; i < vector->count(); i++)
            push(vector[i]);
    }
    
    ~stack_t()
    {
        delete ptr_head;
    }
    
    // Вставляет указанный элемент в стек.
    void push(T item)
    {
        ptr_head = new node_t<T>(item, ptr_head);
        count++;
    }
    
    // Возвращает верхний элемент стека.
    T pop()
    {
        throw_if_empty();   
        T resultItem = ptr_head->value;
        node_t<T>* ptr_to_remove = ptr_head;
        ptr_head = ptr_head->next_ptr;
        delete ptr_to_remove;
        count--;
        return resultItem;
    }
    
    // Возвращает верхний элемент стека.
    T peek()
    {
        throw_if_empty();
        return ptr_head->value;
    }
    
    // Очищает стек.
    void clear()
    {
        node_t<T>* ptr_current = ptr_head;
        while (ptr_current)
        {
            node_t<T>* ptr_to_remove = ptr_current;
            ptr_current = ptr_current->ptr_next;
            delete ptr_to_remove;
        }
    }
    
    // Выводит данные стека.
    void print() //const // С const той ошибки нет.
    {
        node_t<T>* ptr_current = ptr_head;
        while (ptr_current)
        {
            ptr_current->print();
            if (ptr_current->ptr_next)
                cout << ", ";
            ptr_current = ptr_current->ptr_next;
        }
    }
    
    // Выводит данные стека и переходит на новую строку.
    void println() const
    {
        print();
        cout << endl;
    }
};
 
int main(int argc, char** argv)
{
    stack_t<int>* s = new stack_t<int>(5, new int[5] { 1, 2, 3, 4, 5 });
    s->println();
    delete s;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.02.2019, 08:49
Ответы с готовыми решениями:

int const * const foo(const int* param) const - разъясните значение квалификаторов
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

error: invalid operands of types 'const int*' and 'const int*' to binary 'operator+'
Что означает ошибка в 8 строчке error: invalid operands of types 'const int*' and 'const int*' to binary 'operator+'? ...

49
0 / 0 / 0
Регистрация: 26.02.2019
Сообщений: 10
26.02.2019, 15:10
Студворк — интернет-сервис помощи студентам
Соколиный глаз, о земеля здарова
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
26.02.2019, 18:03
Цитата Сообщение от _stanislav Посмотреть сообщение
если связка malloc / free, то да
Для free тоже не надо проверять.
Как все-таки живучи эти мифы.
Ты же вряд ли в 1986 году программировал, откуда оно взялось у тебя?
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.02.2019, 18:07
Цитата Сообщение от DrOffset Посмотреть сообщение
Ты же вряд ли в 1986 году программировал, откуда оно взялось у тебя?
иногда старье читаю не всегда понимая что это старье

Добавлено через 20 секунд
наверно
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
26.02.2019, 18:08
Цитата Сообщение от _stanislav Посмотреть сообщение
иногда старье читаю не всегда понимая что это старье
Очень интересно было бы узнать в каком конкретном старье про это написано.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.02.2019, 18:10
Цитата Сообщение от DrOffset Посмотреть сообщение
Очень интересно было бы узнать в каком конкретном старье про это написано.
мне тоже интересно, или я придумал просто это?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
26.02.2019, 18:13
Цитата Сообщение от _stanislav Посмотреть сообщение
мне тоже интересно, или я придумал просто это?
Скорее всего видел у кого-то в интернете. А те у кого-то еще. И через много таких видевших кто-то видел у товарища, который программировал в 1986м и напоролся на тот злополучный баг с крешдампом на нулевом пойнтере.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.02.2019, 18:19
Цитата Сообщение от DrOffset Посмотреть сообщение
Скорее всего видел у кого-то в интернете. А те у кого-то еще. И через много таких видевших кто-то видел у товарища, который программировал в 1986м и напоролся на тот злополучный баг с крешдампом на нулевом пойнтере.
объективное суждение

Добавлено через 1 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
напоролся на тот злополучный баг с крешдампом на нулевом пойнтере.
что за баг?

Добавлено через 3 минуты
PalmOS?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
26.02.2019, 18:26
Цитата Сообщение от _stanislav Посмотреть сообщение
PalmOS?
86, а не 96.

Цитата Сообщение от _stanislav Посмотреть сообщение
что за баг?
Падение на нулевом указателе, переданном в free.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.02.2019, 18:27
Цитата Сообщение от DrOffset Посмотреть сообщение
Падение на нулевом указателе, переданном в free.
это что на всех платформах было?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
26.02.2019, 18:35
Цитата Сообщение от _stanislav Посмотреть сообщение
это что на всех платформах было?
Это было в DOS, если речь об ОС.
Название тулчейна не помню, сейчас такого нет.
Найти какие-то хвосты этого не удалось.
Так что довольствуйся этим. Я лично за все время работы ни разу с подобным поведением не сталкивался.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2019, 18:35

Ошибка: Сannot convert const QVector<int> to int...
Доброго дня! Столкнулся вот с такой ошибкой int max; QList&lt;QVector&lt;int&gt; &gt;* Data_to_plot ; Data_to_plot = Data; max =...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int)
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

Ошибка Cannot convert 'const char *' to 'void *'
Всем привет! Нужна помощь новичку. Пытаюсь в С++ Builder 2009 создать простую программу для библиотеки без использования базы данных....

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

Чем отличаются выражения (const int[]){value} от (const int[]){100}
(const int){22} //Приведение к массиву и инициализация его значениями 22 от (const int){i} //Приведение к массиву и инициализация его...


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

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru