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

Не получается реализовать перегрузку операторов - C++

Восстановить пароль Регистрация
 
Fatosha
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 153
13.06.2014, 19:08     Не получается реализовать перегрузку операторов #1
Начал изучать С++, пытаюсь перегрузить оператор, чет не очень получается, в чем ощибка?
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
class Sequence
{
public:
    int elem(int num)
    {
        return vec[num];
    }
    Sequence(int len)
    {
        _len = len;
        for (int i = 0; i < len; ++i)
        {
            vec.push_back(i);
        }
    }
    ostream& operator<<(ostream& os, Sequence& seq)
    {
        for (int i = 0; i < _len; ++i)
            os << seq.elem(i) << ' ';
        os << '\n';
        return os;
    }
private:
    int _len;
    vector<int> vec;
};
 
 
int main()
{
    Sequence i(10);
    cout << i;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 19:08     Не получается реализовать перегрузку операторов
Посмотрите здесь:

как реализовать перегрузку опрератора "="? C++
C++ Не получается реализовать
пожалуйста подскажите как реализовать перегрузку операторов C++
Создать 2 объекта a и b, разработанного класса – символьная строка, реализовать перегрузку операции >= C++
Создать класс "Дата" с конструкторами, деструктором, указанными методами. Выполнить перегрузку указанных операторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4304 / 3725 / 1255
Регистрация: 14.04.2014
Сообщений: 14,589
13.06.2014, 19:09     Не получается реализовать перегрузку операторов #2
Ввод и вывод надо объявлять как friend.
C++
1
2
3
4
5
6
7
friend ostream& operator<< (ostream& os, const Sequence& seq)
    {
        for (int i = 0; i < _len; ++i)
            os << seq.elem(i) << ' ';
        os << endl;
        return os;
    }
Fatosha
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 153
13.06.2014, 19:11  [ТС]     Не получается реализовать перегрузку операторов #3
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
class Sequence
{
public:
    int elem(int num)
    {
        return vec[num];
    }
    Sequence(int len)
    {
        _len = len;
        for (int i = 0; i < len; ++i)
        {
            vec.push_back(i);
        }
    }
    friend ostream& operator<<(ostream& os, Sequence& seq)
    {
        for (int i = 0; i < _len; ++i)
            os << seq.elem(i) << ' ';
        os << '\n';
        return os;
    }
private:
    int _len;
    vector<int> vec;
};
 
 
int main()
{
    Sequence i(10);
    cout << i;
}
Как-то не помогло...
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
13.06.2014, 19:13     Не получается реализовать перегрузку операторов #4
C++
1
for (int i = 0; i < _len; ++i)
замените на
C++
1
for (int i = 0; i < sec._len; ++i)
Fatosha
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 153
13.06.2014, 19:16  [ТС]     Не получается реализовать перегрузку операторов #5
Не помогает
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
13.06.2014, 19:18     Не получается реализовать перегрузку операторов #6
так, давайте разберемся, что именно не работает? нет вывода? окно появилось и пропало? программа упала?

Добавлено через 29 секунд
программа компилируется и запускается?
nmcf
4304 / 3725 / 1255
Регистрация: 14.04.2014
Сообщений: 14,589
13.06.2014, 19:18     Не получается реализовать перегрузку операторов #7
Что получилось? Какая ошибка выходит?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 19:21     Не получается реализовать перегрузку операторов
Еще ссылки по теме:

C++ Реализовать для объектов данного класса перегрузку операции
C++ Реализовать для класса перегрузку операции []
Реализовать перегрузку оператора индексации C++

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

Или воспользуйтесь поиском по форуму:
Fatosha
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 153
13.06.2014, 19:21  [ТС]     Не получается реализовать перегрузку операторов #8
Error 1 error C2804: binary 'operator <<' has too many parameters e:\folder\win32project1\win32project1\source.cpp 35 1 Win32Project1
Error 2 error C2333: 'Sequence::operator <<' : error in function declaration; skipping function body e:\folder\win32project1\win32project1\source.cpp 35 1 Win32Project1
Error 3 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'Sequence' (or there is no acceptable conversion) e:\folder\win32project1\win32project1\source.cpp 50 1 Win32Project1

Добавлено через 2 минуты
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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <list>
#include <iterator>
#include <deque>
#include <map>
 
using namespace std;
 
class Sequence
{
public:
    int elem(int num)
    {
        return vec[num];
    }
    int length()
    {
        return _len;
    }
    Sequence(int len)
    {
        _len = len;
        for (int i = 0; i < len; ++i)
        {
            vec.push_back(i);
        }
    }
    friend ostream& operator<<(ostream& os, Sequence& seq)
    {
        for (int i = 0; i < seq.length(); ++i)
            os << seq.elem(i) << ' ';
        os << '\n';
        return os;
    }
private:
    int _len;
    vector<int> vec;
};
 
 
int main()
{
    Sequence i(10);
    cout << i;
}
Исправил. Спасибо за подскаски
Yandex
Объявления
13.06.2014, 19:21     Не получается реализовать перегрузку операторов
Ответ Создать тему
Опции темы

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