Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
1

Исправить ошибку компиляции "для использования класса шаблон требуется список аргументов шаблона"

24.12.2015, 18:30. Просмотров 2217. Ответов 13

Решил создать класс List для задания двусвязного списка, и в самом начале компилятор начал ругаться на шаблон класса:
error C2955: ProgramList::List: для использования класса шаблон требуется список аргументов шаблон
Первый файл List.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once
 
namespace ProgramList
{
    template <typename T1>
    class List
    {
    private:
        struct element
        {
            T1 x;
            element *next;
            element *prev;
        };
 
    
    public:
        List(void);
        ~List(void);
    };
}
Второй файл List.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "List.h"
 
namespace ProgramList
{
 
    List::List(void)
    {
    }
 
 
    List::~List(void)
    {
    }
}
Что к чему, объясните, пожалуйста?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2015, 18:30
Ответы с готовыми решениями:

Ошибка при компиляции:"C2955 "Tree": для использования класс шаблон требуется список аргументов шаблон"
Есть класс бинарного дерева, в нем структура. Класс - Tree, структура - list(листик, а не список)....

"LinkedList": для использования класс шаблон требуется список аргументов шаблон
Что то не могу въехать в чем промах? LinkedList.h #pragma once #include &lt;iostream&gt; #include...

Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон
Есть у меня 3 структуры Трамвай , Троллейбус , Автобус. Для автобуса определены функции (работают)...

Для использование шаблона переменной требуется список аргументов шаблона
Здравствуйте! Не могу понять в чём проблема. //ALL2.cpp #include &quot;pch.h&quot; #include &lt;iostream&gt;...

13
493 / 375 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
24.12.2015, 18:32 2
шаблонный класс нужно реализовывать в том же файле


Можно как то разбить, конечно, но там какое-то читерство.
1
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
24.12.2015, 18:35  [ТС] 3
_Valera_, меня просто учили, что в файле .h должны быть только прототипы, как быть то?
0
493 / 375 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
24.12.2015, 18:39 4
Цитата Сообщение от ChadloveMary Посмотреть сообщение
_Valera_, меня просто учили, что в файле .h должны быть только прототипы, как быть то?
Правильно учили, ну с шаблонами так, если интересно почитай почему, а то долго объяснять(все дело в этапах компиляции...).
0
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
24.12.2015, 18:55  [ТС] 5
_Valera_, я сейчас попытался описать функции в файле .h и он мне пишет: члены недоступны, то есть я не могу обратиться по указателям(begin-> и менюшка не выпадает), что такое?
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
#pragma once
#include <iostream>
 
namespace ProgramList
{
    template <typename T>
    class List
    {
    private:
        struct element
        {
            T x;
            element *next;
            element *prev;
        };
 
    element *begin, *end;
 
    public:
        List(void)
        {
            begin = NULL;
            end = NULL;
        }
 
        void Add(T x)
        {
            if(begin==NULL)
            {
                
            }
            else 
            {
                
            }
 
        }
 
        void Show()
        {
            element *print = begin;
            while(print)
            {
                
            }
 
        }
 
 
        ~List(void)
        {
 
        }
 
    };
}
0
493 / 375 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
24.12.2015, 19:02 6
ChadloveMary, скрин
0
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
24.12.2015, 19:07  [ТС] 7
_Valera_, :
0
Миниатюры
Исправить ошибку компиляции "для использования класса шаблон требуется список аргументов шаблона"  
469 / 422 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.12.2015, 19:09 8
ChadloveMary, описываешь в классе или вне его?
0
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
24.12.2015, 19:11  [ТС] 9
SuperKir, внутри класса, в спецификаторе доступа public
0
493 / 375 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
24.12.2015, 19:14 10
ChadloveMary, маин покажи и как список создаешь
0
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
24.12.2015, 19:20  [ТС] 11
_Valera_, список я реализую внутри класса, к мэйну я ещё даже не притрагивался, он пуст, текст находится в файле List.h:
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
#pragma once
#include <iostream>
 
namespace ProgramList
{
    template <typename T>
    class List
    {
    private:
        struct element
        {
            T x;
            element *next;
            element *prev;
        };
 
    element *begin, *end;
 
    public:
        List(void)
        {
            begin = NULL;
            end = NULL;
        }
 
        void Add(T x)
        {
            if(begin==NULL)
            {
                
            }
            else 
            {
                
            }
 
        }
 
        void Show()
        {
            element *print = begin;
            while(print)
            {
                
            }
 
        }
 
 
        ~List(void)
        {
 
        }
 
    };
}
Добавлено через 2 минуты
_Valera_, у меня с шаблонами затык, потому что если убрать шаблоны, и использовать, допустим, int, то всё работает и доступ сразу появляется
0
469 / 422 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.12.2015, 19:33 12
ChadloveMary, Все нормально добавится, не беспокойся.
Только для конструктора будет: List<T>(void) {..
0
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
24.12.2015, 19:36  [ТС] 13
SuperKir, объясните, пожалуйста, почему так?
0
469 / 422 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
24.12.2015, 20:21 14
ChadloveMary, Просто если описывать вне класса, то без указания шаблон-параметра описать конструктор не получится, можешь попробовать вынести после класса
List:: .. и не получишь ни одного конструктора.

Правильный вариант:
C++
1
2
template <typename T>
List<T>::List()
Добавлено через 8 минут
Не то сказал..)
Все будет работать, и так и так, но лучше указать все же.

А касаемо метода, то тоже сталкивался с таким, но вроде есть этому объяснение
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2015, 20:21

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

Как исправить ошибку "для предложения Handles требуется переменная с модификатором WithEvents"?
Public Class Form1 Public Class Form1 Dim PotPts() As Point = New Point() {New...

Подключение cpp файла дает ошибку "std::array: слишком мало аргументов шаблон"
Хочу создать приложение clr(чтобы были формы в приложении). Получаю примерно такой код: #include...

Как исправить ошибки:"Ни одна из перегрузок метода "ReadLine" не принимает "1" аргументов"
Как исправить ошибки: &quot;Нeявное преобразование типа double в bool невозможно&quot;//строка 55 &quot;Ни одна...

Побороть ошибку "Значение параметра по умолчанию для "rec" должно быть константой времени компиляции"
public class Deal { int iD; //ИДи public int ID { ...


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

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

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