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

При введении шаблона игнорируются ошибки - C++

Восстановить пароль Регистрация
 
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
18.06.2014, 15:59     При введении шаблона игнорируются ошибки #1
При написании класса, если не превращать его в шаблонный класс, MSVS находит все ошибки синтаксиса внутри класса и подчеркивает их, но если дописать template <class Type>, то всё в точности наоборот - можно допустить любую ошибку и программа ее не увидит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template <class Type> // ЕСЛИ УБРАТЬ СТРОКУ - ВСЁ РАБОТАЕТ
class QueueTp
{
private:
    struct Node {Type item; struct Node* next;};
    int items;
    Node* start;
    Node* end;
    const int qsize;
    enum {Q_MAX = 10};
public:
    QueueTp(int qs = Q_MAX)
        : qsize(qs), start(nullptr), end(nullptr), items(0) {}
    ~QueueTp() {}
    bool isempty();
    bool isfull();
    int qcount();
    bool push(const Type& t);
    bool pop();
};
Подскажите пожалуйста, в чем дело? За пределами класса всё работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 15:59     При введении шаблона игнорируются ошибки
Посмотрите здесь:

C++ При использовании оператора GOTO зацикливается программа при введении букв.
C++ Ошибки при создании шаблона
C++ написать программу, которая выводит на экран оценку при введении количества баллов не используя цикл
Найти сумму ряда при введении с клавиатуры числа n C++
Вылетает при введении данных в структуру. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
18.06.2014, 16:14     При введении шаблона игнорируются ошибки #2
Короткий ответ - это нормальное поведение шаблонов.
Чтобы убедиться в отсутствии ошибок, необходимо написать тесты, в которых будут вызываться все методы шаблонного класса.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,964
18.06.2014, 16:17     При введении шаблона игнорируются ошибки #3
Подскажите пожалуйста, в чем дело?
В лени разработчиков MSVS. На сколько я помню, MSVS синтаксис шаблона проверяет, но только когда в шаблон подставляют конкретные аргументы (QueueTp<int>). До этого да, в коде шаблона можно хоть попой по клавиатуре прыгать и компилятор этого не заметит. Другие компиляторы (тот же gcc) прыгать попой уже не дают.
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
18.06.2014, 16:18  [ТС]     При введении шаблона игнорируются ошибки #4
Цитата Сообщение от 0x10 Посмотреть сообщение
Короткий ответ - это нормальное поведение шаблонов.
Чтобы убедиться в отсутствии ошибок, необходимо написать тесты, в которых будут вызываться все методы шаблонного класса.
Цитата Сообщение от Renji Посмотреть сообщение
В лени разработчиков MSVS. На сколько я помню, MSVS синтаксис шаблона проверяет, но только когда в шаблон подставляют конкретные аргументы (QueueTp<int>). До этого да, в коде шаблона можно хоть попой по клавиатуре прыгать и компилятор этого не заметит. Другие компиляторы (тот же gcc) прыгать попой уже не дают.
Спасибо. Тема закрыта.
Yandex
Объявления
18.06.2014, 16:18     При введении шаблона игнорируются ошибки
Ответ Создать тему
Опции темы

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