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

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

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

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

21.12.2012, 02:48. Просмотров 734. Ответов 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++
.Создать класс Binary1, который будет содержать число в двоичной системе C++
Для телефонной компании составить список клиентов, который должен содержать: C++
Почему вывод аргументов не осуществляется для классового шаблона? C++
C++ Создайте класс, в котором есть ostream& operator<<. Класс должен содержать очередь с приоритетом
C++ Класс - Ошибки при вызове методов: В вызове функции отсутствует список аргументов
Сколько адресов теоритически может содержать стек вызовов? C++
Исправить ошибку компиляции "для использования класса шаблон требуется список аргументов шаблона" C++
C++ Создайте класс Student, который будет содержать информацию о студенте
C++ Создать базовый класс «Список» и класс-потомок «Упорядоченный список»

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
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)
вы либо равенство поставте либо минус уберите, а так все работает
Yandex
Объявления
21.12.2012, 07:33     класс не может содержать список аргументов шаблона
Ответ Создать тему
Опции темы

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