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

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

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

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

18.06.2014, 15:59. Просмотров 201. Ответов 3
Метки нет (Все метки)

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

Ошибки при создании шаблона - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &quot;time.h&quot; #include &lt;math.h&gt; #include &lt;stdio.h&gt; using namespace std; ...

При использовании оператора GOTO зацикливается программа при введении букв. - C++
Приветствую всех новых знакомых в этом храме программирования. Я новичек, пытаюсь программировать в С++ недавно. У меня возник вопрос...

Ошибка при введении формулы - C++
Скриншот формул в закрепленной картинке. Юзаю, вроде как: asin(x+abs(y)) выдает ошибки. хелп.

При введении 2 массивов ошибка - C++
#include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;ctime&gt; using namespace std; void input(int**,int,int); int main(){ ...

Вылетает при введении данных в структуру. - C++
Делаю структуру вроде бы работает но вылетает после введение данных не пойму.Помогите пожалусто. #include&lt;conio.h&gt; #include&lt;stdio.h&gt; ...

Почему выводит кириллицу при введении кодов ASCII? - C++
Добрый день! Ввожу char f=156; cout&lt;&lt;f; Это код знака фунта. Но вместо получаю ь. Работаю в Visual Studio. И вообще у меня...

3
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,126
18.06.2014, 16:14 #2
Короткий ответ - это нормальное поведение шаблонов.
Чтобы убедиться в отсутствии ошибок, необходимо написать тесты, в которых будут вызываться все методы шаблонного класса.
1
Renji
2015 / 1383 / 312
Регистрация: 05.06.2014
Сообщений: 3,947
18.06.2014, 16:17 #3
Подскажите пожалуйста, в чем дело?
В лени разработчиков MSVS. На сколько я помню, MSVS синтаксис шаблона проверяет, но только когда в шаблон подставляют конкретные аргументы (QueueTp<int>). До этого да, в коде шаблона можно хоть попой по клавиатуре прыгать и компилятор этого не заметит. Другие компиляторы (тот же gcc) прыгать попой уже не дают.
1
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
18.06.2014, 16:18  [ТС] #4
Цитата Сообщение от 0x10 Посмотреть сообщение
Короткий ответ - это нормальное поведение шаблонов.
Чтобы убедиться в отсутствии ошибок, необходимо написать тесты, в которых будут вызываться все методы шаблонного класса.
Цитата Сообщение от Renji Посмотреть сообщение
В лени разработчиков MSVS. На сколько я помню, MSVS синтаксис шаблона проверяет, но только когда в шаблон подставляют конкретные аргументы (QueueTp<int>). До этого да, в коде шаблона можно хоть попой по клавиатуре прыгать и компилятор этого не заметит. Другие компиляторы (тот же gcc) прыгать попой уже не дают.
Спасибо. Тема закрыта.
0
18.06.2014, 16:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 16:18
Привет! Вот еще темы с ответами:

Вывести на экран оценку при введении количества баллов - C++
НЕ ИСПОЛЬЗУЯ ЦИКЛОВ! написать программу, которая выводит на экран оценку при введении количества баллов. с 0-54 балла -2, с 55-69 -3; с...

Найти сумму ряда при введении с клавиатуры числа n - C++
Дан ряд \sum_{n=o}^{k}\frac{{(-1)}^{n}}{(2n+1){2}^{2n+1}} Первое задание: программа без рекурсии. Вот что получилось, но...

При введении больше 20 чисел программа выдает странный результат - C++
#include &lt;iostream&gt; #include &lt;locale&gt; using namespace std; double t1, t2; int main() { setlocale(LC_ALL,...

Посчитать стоимость телефонного разговора при введении времени начала и окончания - C++
всем привет. есть задача: Пользователь вводит с клавиатуры время начала и время завершения телефонного разговора (часы, минуты и секунды)....


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

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

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