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

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

Войти
Регистрация
Восстановить пароль
 
m1ster
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 55
#1

класс не может содержать список аргументов шаблона - C++

21.12.2012, 02:48. Просмотров 839. Ответов 1
Метки нет (Все метки)

я создал шаблон
заменил его в коде вместо vector
и теперь везде на месте myvector пишет
class "myvector" не может содержать список аргументов шаблона
в чем проблема?


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
#include <iostream>
using namespace std;
template<class MyType>
class myvector{
private:
    MyType *arr;
    int capacity;
public:
    class iterator
    {
    private:
        MyType *ptr;
    public:
        iterator(MyType *ptr):ptr(ptr){};
        friend class myvector;
        MyType& operator*();
        iterator&operator ++();
        iterator&operator --();
        int operator!=(const iterator&) const;
        int operator==(const iterator&) const;
 
    };
    iterator _begin() const;
    iterator _end() const;
    myvector<MyType>&operator=(const myvector<MyType>&);//перегружаем равно
    myvector():arr(nullptr),capacity(0){}//констуктор
    myvector(int s):capacity(s),arr(new MyType[s]){}//конструктор
    void push_back(const MyType&);//добавление
    void erase(const MyType&);//удаление
    int size() const;//возвращает размер
    ~myvector(){if(arr!=nullptr)//диструктор
        delete [] arr;
    }
    void clear()//очистка вектора
    {if(arr!=nullptr)
        delete [] arr;
    capacity=0;
    }
 
    MyType&operator [](int);//возвращаем тип по числу
 
};
 
////*********ДЛЯ ИТЕРАТОРА******
//template <class MyType>
//myvector<MyType>::iterator(MyType *ptr): ptr(ptr){}
 
template <class MyType>
MyType&myvector<MyType>::iterator::operator *()
{
return *ptr;
}
 
template<class MyType>
typename myvector<MyType>::iterator& myvector<MyType>::iterator::operator++()
{
    ptr++;
    return *this;
}
template<class MyType>
typename myvector<MyType>::iterator& myvector<MyType>::iterator::operator--()
{
    ptr--;
    return *this;
}
 
template<class MyType>
int myvector<MyType>::iterator::operator!=(const iterator&i) const
{
    return i.ptr!=ptr;
}
template<class MyType>
int myvector<MyType>::iterator::operator==(const iterator&i) const
{
    return i.ptr==ptr;
}
 
template<class MyType>
void myvector<MyType>::push_back(const MyType&element)
{
 
MyType *temp= new MyType[++capacity];
for(int i=0; i<(capacity-1); ++i)
temp[i]=arr[i];
if(capacity!=1)
delete [] arr;
arr=temp;
arr[capacity-1]=element;
}
 
template <class MyType>
int myvector<MyType>::size() const
{
return capacity;
}
 
template <class MyType>
MyType&myvector<MyType>::operator [](int i)
{
    return arr[i];
}
 
template <class MyType>
typename myvector<MyType>::iterator myvector<MyType>::_begin() const
{
iterator i(arr);
return i;
}
 
template <class MyType>
typename myvector<MyType>::iterator myvector<MyType>::_end() const
{
iterator i(arr+capacity);
return i;
}
template <class MyType>
void myvector<MyType>::erase(const MyType&el)
{
    for(int i=0;i<capacity;++i)
        if(arr[i]==el){
            for(i;i<capacity;++i)
                arr[i]=arr[i+1];
        }
        capacity--;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 02:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос класс не может содержать список аргументов шаблона (C++):

Реализовать двухсвязный список. Каждый элемент списка может содержать один объект - C++
Здравствуйте, мне нужно было реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех...

Исправить ошибку компиляции "для использования класса шаблон требуется список аргументов шаблона" - C++
Решил создать класс List для задания двусвязного списка, и в самом начале компилятор начал ругаться на шаблон класса: error C2955:...

Класс - Ошибки при вызове методов: В вызове функции отсутствует список аргументов - C++
Добрый вечер всем! При изучении и написании работы столкнулся с ошибкой от которой не могу избавиться. (Т.к. очень сильно плаваю в ООП)....

Создайте класс, в котором есть ostream& operator<<. Класс должен содержать очередь с приоритетом - C++
Создайте класс, в котором есть ostream&amp; operator&lt;&lt;. Класс должен содержать очередь с приоритетом. Создайте генератор — заполнитель очереди...

Почему вывод аргументов не осуществляется для классового шаблона? - C++
Вот что говорит по этому поводу Страуструп. А мне хоть учебник на эту тему дай, без примера не могу обойтись... Товарищи знатоки, напишите...

Сколько адресов теоритически может содержать стек вызовов? - C++
После какой по счету помещенной в стек функции возникает переполнение стека, и сколько автоматических переменных может в теории содержать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
21.12.2012, 07:33 #2
у меня все компилится но у вас ошибки,
C++
1
2
3
4
5
6
7
8
9
10
11
void myvector<MyType>::push_back(const MyType&element)
{
 
MyType *temp= new MyType[++capacity];
for(int i=0; i<(capacity-1); ++i)
temp[i]=arr[i];
if(capacity!=1)
delete [] arr;
arr=temp;
arr[capacity-1]=element;
}
дальше пуш бека не дошел но и тут хватает
C++
1
 i<(capacity-1)
вы либо равенство поставте либо минус уберите, а так все работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2012, 07:33
Привет! Вот еще темы с ответами:

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

Что должен содержать класс по-умолчанию? - C++
Если пишется класс, то обязательно должны быть реализованы следующие операции: 1) Конструктор по-умолчанию 2) Перегрузка оператора '=' ...

Определите класс, который должен содержать атрибуты - C++
Здравствуйте уважаемые любители и ценители языка С++! У меня к вам огромная просьба. На днях нужно сдать контрольную работу по предмету...

Как задать матрицу, в которой каждый элемент может содержать переменное множество чисел? - C++
Здраствуйте, извиняюсь, если вопрос покажется странным. Для решения системы уравнений мне необходимо задать параметры. Выглядит это...


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

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

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