2 / 2 / 0
Регистрация: 26.04.2019
Сообщений: 33
1

Проблема со сравнением в шаблонах

23.10.2019, 00:32. Показов 697. Ответов 3

Author24 — интернет-сервис помощи студентам
Всем привет.

Такая ситуация:

C++
1
2
3
4
5
6
7
template<typename T>
class mlist
{
public:
void insert(T data, int position = -1);
int size = 0;
}
C++
1
2
3
4
5
6
7
8
9
template<typename T>
inline void mlist<T>::insert(T data, int position)
{
    if (position > size)
    {
        std::cout << "Wrong index!" << std::endl;
        return;
    }
}
C++
1
2
mlist<int> m;
    m.insert(1);  //    Wrong index!

При вызове без второго параметра всегда выполняется условие, то есть -1 > 0;
Проект пересобирал - не помогает.
Чего я не понимаю? Как так-то?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2019, 00:32
Ответы с готовыми решениями:

Проблема со сравнением в шаблонах
Всем привет. template&lt;typename T&gt; class mlist { public: void insert(T data, int...

Проблема со сравнением двух переменных
Есть такая задача - нужно сделать поиск по нескольким параметрам, например: название, цена,...

Проблема со сравнением значений(символов) в переменных типа AnsiString
Здравствуйте! Почему то при сравнении двух одинаковых символов в переменных str и b(тип...

Проблема с сравнением unsigned long long int числа
Написала программу для перевода чисел типа unsigned long long int с десятичной системы счисления в...

3
Just Do It!
3837 / 2283 / 636
Регистрация: 23.09.2014
Сообщений: 7,051
Записей в блоге: 2
23.10.2019, 03:08 2
Цитата Сообщение от Sergey2281488 Посмотреть сообщение
Чего я не понимаю? Как так-то?
на будущее:
приводите с собой тот код, который терминировал ошибку.

Вот запускаю:
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
#include <iostream>
 
template<typename T>
class mlist
{   public:
        void insert(T data, int position = -1);
        int size = 0;
};
 
template<typename T>
inline void mlist<T>::insert(T data, int position)
{   if (position > size)
    {   std::cout << "Wrong index!" << std::endl;
        return;
    }
    else
    {   std::cout << "else: " << position << std::endl;
    }
}
 
int main()
{   std::cout << "main" << std::endl;
 
    mlist<int> m;
    m.insert(1);  //    Wrong index!
 
    return 0;
}
Результат:
Название: 2 (2).jpg
Просмотров: 21

Размер: 1.5 Кб

Что не так?
Если всё работает.
0
Вездепух
Эксперт CЭксперт С++
11688 / 6367 / 1723
Регистрация: 18.10.2014
Сообщений: 16,050
23.10.2019, 03:28 3
Цитата Сообщение от Sergey2281488 Посмотреть сообщение
При вызове без второго параметра всегда выполняется условие, то есть -1 > 0;
Вы что-то выдумываете или не договариваете.
0
2 / 2 / 0
Регистрация: 26.04.2019
Сообщений: 33
23.10.2019, 10:16  [ТС] 4
неправильно скопировал код.
Переменная size была типа size_t;
из-за этого при сравнении position приводилась также к size_t;
В этом и была ошибка
1
23.10.2019, 10:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2019, 10:16
Помогаю со студенческими работами здесь

Поиск с сравнением
Добрый день. Подскажите,пожалуйста,решение для написания программы в VBA для Excel. Имеются две...

Не работает оператор if с сравнением (if (b == x)
Здравствуйте у меня произошла проблемка =&gt; if не хочет сравнивать две переменных =&gt; #include...

Запрос к БД со сравнением строк
Здравствуйте форумчане, подскажите, пожалуйста, как правильно оформить запрос к БД Access. Мне...

Запрос с сравнением символов
Добрый день, появилась задачка с решением которой никак не могу разобраться. Имеются две таблица, в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru