Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Примитивная игра на c++ Учу С++ потихоньку, дошёл до структур даннах, классов. Писал пока что консольные приложения. Возникла идея написать простенькую 2d игру, например, змейку/крестики-нолики/тетрис. Подкажите в какую сторону копать. Нужно ли Qt или OpenGL или можно пока без них обойтись? Можно ли в привычном Code::Blocks сделать или проще в Borland Builder? Что почитать по этой теме? https://www.cyberforum.ru/ cpp-beginners/ thread943190.html Собственный манипулятор C++
Здорова господа! Я пытаюсь создать свой собственный манипулятор, который будет принимать основу числа: десять шестнадцать и два и само число, и будет выводить число в соотсветствующей системе счисления. От я набраса примерно манипулятор //манипулятор вывода ostream& based(ostream& stream) { cout <<"mu tyt"<<endl;
C++ Вывести числа со специальным форматом https://www.cyberforum.ru/ cpp-beginners/ thread943171.html
Всем привет! Есть задание: "Напишите программу, считывающую из файла числа, разделенные пробелами, и выводящую в другой файл числа, используя научный формат и точность, равную восьми в четырех полях по двадцать символов в строке". Что хотят в этом задании? Ведь не вместить 4 поля в одну строку из 20 символов (если точность 8 - это не вмещается).
C++ rand(time(NULL) Необходимо получить диапозон случайных чисел от 1 до 6. Я это пытаюсь делать вот таким образом void main(){ srand(time(NULL)); int cub1=rand()%(1+5); int cub2=rand()%(1+5); https://www.cyberforum.ru/ cpp-beginners/ thread943170.html
Непонятный вывод значений синуса C++
Есть вот такой код: #include <iostream> #include <cmath> using namespace std; const double pi = 3.14159265358979; int main() { cout <<sin(pi) <<endl
C++ Не получается заполнить массив целыми числами Почему результат при выводе не тот, который должен быть? Должно получится 2 4 6 8 10 12 14 16 18 20, а на самом деле 0 2 2 2 2 2 2 2 2 2 2? #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { array<int> ^data = gcnew array<int>(10); https://www.cyberforum.ru/ cpp-beginners/ thread943122.html
C++ Вывести на экран таблицу значений функции и ее разложение в ряд https://www.cyberforum.ru/ cpp-beginners/ thread943119.html
Задали в универе. Даже незнаю как подобные задачи решаются.
Ругается на шаблон C++
Не пойму , но компилятор ругается на эту функцию : bool contains(const &T); И пишет что int не поддерживается по умолчанию. Вот полный код: #ifndef ArrayList_H #define ArrayList_H
C++ Непонятки с классами https://www.cyberforum.ru/ cpp-beginners/ thread943091.html
Народ, уже всё перерыл, впервые с проблемой столкнулся :( Создаю консольное приложение: файл class.h #pragma once class Order{ private: bool *order; int numElem; public:
C++ То ли getchar мозги парит, то ли я что-то не вижу не срабатывает, получается бесконечный цикл... do { ch=getchar(); } while ((ch != 'y') | (ch!='n')); что не так, подскажите, плиз https://www.cyberforum.ru/ cpp-beginners/ thread943088.html
C++ Специализация nested template class
Всем доброго дня. Сделал частичную развертку циклов с помощью шаблонов. Однако, если вспомогательную структуру inner_unroller сделать nested для главного класса-унроллера, то компилятор ругается - nested class является шаблонным и специализируется внутри главного класса: template<size_t idx_start, size_t idx_end> class partial_unroller//Главный класс - "частичный развертыватель" { public:...
C++ поменят местами элементи массива составить программу, которая меняет местами два любих элементи двумерного массива https://www.cyberforum.ru/ cpp-beginners/ thread943078.html
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
0

Перегрузка << в шаблоне - C++ - Ответ 4983226

24.08.2013, 22:25. Показов 1488. Ответов 9
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Ругается когда перегружаю
template < class T > ostream &operator<<(ostream &out, const ArrayList<T> &d);

Ошибки VS2010:

Ошибка 8 error C2676: бинарный "++": "std::ostream" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору d:\vc c++ temp\arraylist\arraylist\arraylist.h 163 1 ArrayList

Ошибка 7 error C2679: бинарный "!=": не найден оператор, принимающий правый операнд типа "int" (или приемлемое преобразование отсутствует) d:\vc c++ temp\arraylist\arraylist\arraylist.h 161 1 ArrayList


Весь код:

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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#ifndef ArrayList_H
#define ArrayList_H
 
#include <stdexcept>
using std::runtime_error;
 
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
 
 
struct IllegalModificationException : public runtime_error
{
public:
    IllegalModificationException() : runtime_error( "IllegalModificationException" ) {}
    IllegalModificationException(char * ch) : runtime_error( ch ) {}
};
 
 
template<class T> class ArrayList 
{
 
friend ostream &operator<<(ostream &, const ArrayList &);
 
public:
    explicit ArrayList(int = 10);
    virtual ~ArrayList();
    void add(T&);
    int size();
    T &get(int);
    T &get(int) const;
    bool contains(const T&);
    T &remove(int);
 
private:
    int lenght;
    T ** mas;
    void setSize(int);
    void initMas();
    int seek;
    float shift;
    void removeHelper(T **temp,int index,int count,int count2);
};
 
template< class T > ArrayList < T > :: ArrayList(int d)
{
    setSize(d);
    shift = 2.0;
    seek = 0;
}
 
template< class T > ArrayList < T > :: ~ArrayList()
{
    delete [] mas;
}
 
template< class T > void ArrayList < T > :: initMas()
{
    mas = new T*[lenght];
}
 
template< class T > void ArrayList < T > :: setSize(int size)
{
    if(size > 0)
     lenght = size;
    else
       lenght = 10;
 
    initMas();
}
 
template< class T > int ArrayList < T > :: size()
{
    return seek;
}
 
template< class T> void ArrayList < T > :: add(T &obj)
{
 
    if(lenght == seek)
    {
        T ** temp = mas;
 
        lenght*= shift;
 
        mas = new T*[lenght];
 
        for(int i = 0; i < seek; i++)
        {
            mas[i] = temp[i];
        }
 
        delete [] temp;
 
    }
    mas[seek++] = &obj;
}
 
 
template < class T > T &ArrayList < T > :: get(int index) throw (IllegalModificationException)
{
    if(!(index > seek || index < 0))
    {
        return *mas[index];
    }
    else
    {
        throw IllegalModificationException("Illegal invoke");
    }
}
 
template < class T> T &ArrayList < T > :: get(int index) const throw (IllegalModificationException) 
{
    if(!(index > seek || index < seek))
    {
        return mas[index];
    }
    else
    {
        throw IllegalModificationException("Illegal invoke");
    }
}
 
template < class T > bool ArrayList < T > :: contains(const T &obj)
{
    for(int i = 0; i < seek; i++)
    {
        if(mas[i] == obj)
        {
            return true;
        }
    }
 
    return false;
}
 
template < class T > T &ArrayList < T > :: remove(int index) throw (IllegalModificationException)
{
    if(index > seek || index < 0)
    {
        throw IllegalModificationException();
    }
    else
    {
        T **temp = new T*[size()-1];
        int count = 0,count2 = 0;
 
        removeHelper(temp,index,count,count2);
        mas = temp;
 
        delete [] temp;
    }
}
 
template < class T > void ArrayList < T > :: removeHelper(T **temp,int index,int count,int count2)
{
    if(count < size()-1)
    {
        if(cout != index)
        {
            temp[count++] = mas[count2++]; 
        }
        else
        {
            count2++;
        }
        removeHelper(temp,index,count,count2);
    }
}
template < class T > ostream &operator<<(ostream &out, const ArrayList<T> &d)
{
    for(int i = 0; i < d.size(); i++)
    {
        out << "["<< i << "]" << " :: " << i;
        if((i + 1) % 5 = 0)
        {
            out << endl;
        }
    }
 
    return out;
}
 
#endif


Вернуться к обсуждению:
Перегрузка << в шаблоне C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2013, 22:25
Готовые ответы и решения:

Перегрузка оператора в шаблоне
Добрый день, не могу сделать данную штуку. Есть у меня шаблон вектор(не из библиотеки), и не могу...

перегрузка оператора в шаблоне
Здравствуйте. Подскажите пожалуйста, как мне реализовать перегрузку оператора сравнения в...

Перегрузка оператора в шаблоне
Здравствуйте! подскажите пожалуйста как перегрузить оператор &lt;!(думаю и-за этого вылетает ошибка)....

Перегрузка оератора = в шаблоне
Есть шаблон: template &lt;typename V&gt; class Vector; и есть функця: V operator=(const Vector &amp;);...

9
24.08.2013, 22:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2013, 22:25
Помогаю со студенческими работами здесь

Перегрузка << в шаблоне класса List
Сап. Написал класс, реализующий работу односвязного списка. Для вывода решил использовать...

Перегрузка операторов в шаблоне класса
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;typeinfo&gt; #include &lt;windows.h&gt; using...

Перегрузка оператора = в шаблоне класса
Доброго дня! Возник такой вот вопрос: я сделал шаблон класса и пытаюсь перегрузить его оператор...

Перегрузка унарных и бинарных операторов в шаблоне
Доброго времени суток! Недавно столкнулся с проблемой при написании такого шаблона: template...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru