Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
barracuda91
1

Перегрузка операции для итератора

02.10.2009, 11:40. Показов 3060. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, назрела такая проблема - не перегружается оператор или я неправильно использую перегрузку - 3 дня мучаюсь, уже надоедает, помогите, пожалуйста, выяснить в чем ошибка - в любом случае в голове xD но мне важно понять, что я неправильно понимаю в перегрузке операторов:

вот код:

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
#include <iostream>
 
using namespace std;
 
template <class T1>
class iter_class{
public:
    T1 value;
    iter_class *next;
    iter_class *prev;
};
 
template <class T1>
class faktorial{
public:
    typedef iter_class<T1>* iterator;
    iterator fbegin, fend;
    faktorial();
    faktorial(T1);
    unsigned long int fakt(int u);
    iterator begin(){ return fbegin; };
    iterator end()  { return fend;};
    iter_class<T1> *operator++(int){
        return (this->next);
    };
    T1 operator*(iterator it){
        return it->value;
    }
};
 
template <class T1>
faktorial<T1>::faktorial(){
    fbegin=new iterator;
    fend=new iterator;
    fbegin->next=fend;
    fend->prev=fbegin;
};
 
template <class T1>
faktorial<T1>::faktorial(T1 u){
    fbegin=new iter_class<T1>;
    fend=fbegin;
    iterator it;
    iterator el;
    it=begin();
    for (int i=0; i<=u; i++){
        it->value=i;
        el = new iter_class<T1>;
        fend->next=el;
        fend->next->prev=fend;
        fend = fend->next;
        it=fend;
    }
};
 
template <class T1>
unsigned long int faktorial<T1>::fakt(int u){
    unsigned int i=1;
    if (u==0 || u==1) return 1;
    else {
        for (int j=2; j<=u; j+=1) i=i*j;
        return i;
    }
}
 
void main(){
 
    faktorial<int> f(10);
    faktorial<int>::iterator x;
    x=f.begin();
    while (x!=f.end()){ 
        cout << f.fakt(x->value) << " "; 
        x=x->next;
    }
    cout << endl;
 
}
благодарю за внимание

PS: в коде майна не выложил использование перегруженных операторов ++ и * - они не работают, поэтому решил написать рабочий вариант: как должен выглядеть вывод
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2009, 11:40
Ответы с готовыми решениями:

Перегрузка оператора вывода для итератора шаблоного массива
#include &lt;QCoreApplication&gt; #include &lt;iostream&gt; #include&lt;iomanip&gt; #include&lt;stdio.h&gt;...

Перегрузка операции < для класса вектор
всем привет. есть класс вектор (одномерный массив). есть два объекта A и B этого класса....

Перегрузка операции присваивания для класса
Поискал по форуму но подобной проблемы не нашел. Вот код класса: class Romb { public: Romb...

Перегрузка операции [][] для класса Матрица
Добрый день. Возможно, кто нить знает, как правильно перегрузить операцию для класса Матрица....

2
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
02.10.2009, 18:12 2
Где текст и код ошибки?
назрела такая проблема - не перегружается оператор
Что это значит?
0
barracuda91
02.10.2009, 23:43 3
1>.\zadan.cpp(71) : error C2679: бинарный '<<': не найден оператор, принимающий правый операнд типа 'iter_class<T1>' (или приемлемое преобразование отсутствует)

C++
1
2
3
4
faktorial<int> f(10);
    faktorial<int>::iterator x;
    x=f.begin();
    cout << *x;
а если я пишу x++, то он не переходит к след. элементу списка и выводит непонятные числа при выводе значений value
02.10.2009, 23:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2009, 23:43
Помогаю со студенческими работами здесь

Перегрузка операции + для сложения элементов динамического массива
Написал класс, создаваемый объект является динамическим массивом заполняемый рандомом по умолчанию,...

Перегрузка операции += для наращивания значение времени на заданную величину
Может кто дописать код по вот такому принципу Перегрузить операцию + = для наращивания значение...

Перегрузка операции "*" для умножения одномерных массивов
Нужна помощь. Есть условие задачи: Выполните перегрузку операции &quot;*&quot; для умножения одномерных...

Тело метода не может быть блоком итератора, так как "void" не является типом интерфейса итератора
using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru