Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Перегрузка оператора индексации - C++

07.04.2017, 21:53. Просмотров 201. Ответов 2
Метки нет (Все метки)

Доброго вам времени суток, у меня появилась проблема з перезагузкой оператора индексации ([]),вот мой код:
MyVectorClass.h
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
 #include "stdafx.h"
  #include "MyVectorClass.h"
  #include <iostream>
  using namespace std;
namespace program
{     
      MyVectorClass::MyVectorClass()
      {
        numbers=0;
        SizeOfArray=0;
      };
      MyVectorClass::MyVectorClass(int size)
      {
          SizeOfArray=size;
          numbers=new double [SizeOfArray];
          for (int i=0;i<SizeOfArray;i++)
          {
              numbers[i]=0;
          }
      }
      MyVectorClass::~MyVectorClass()
      {
      delete [] numbers;
      };    
      MyVectorClass::MyVectorClass(const MyVectorClass&)
      {};
      double  MyVectorClass::operator[](int j){
        return numbers[j];
      };
      
}
MyVectorClass.cpp
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
  #include "stdafx.h"
  #include "MyVectorClass.h"
  #include <iostream>
  using namespace std;
namespace program
{     
      MyVectorClass::MyVectorClass()
      {
        numbers=0;
        SizeOfArray=0;
      };
      MyVectorClass::MyVectorClass(int size)
      {
          SizeOfArray=size;
          numbers=new double [SizeOfArray];
          for (int i=0;i<SizeOfArray;i++)
          {
              numbers[i]=0;
          }
      }
      MyVectorClass::~MyVectorClass()
      {
      delete [] numbers;
      };    
      MyVectorClass::MyVectorClass(const MyVectorClass&)
      {};
      double  MyVectorClass::operator[](int j){
        return numbers[j];
      };
      
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include "MyVectorClass.h"
using namespace std;
using program::MyVectorClass;
 
int main()
{
  MyVectorClass A(3);
  A[0]=1;
  A[1]=2;
  A[2]=3;
  cout<<A[0];
  system("pause");
    return 0;
}
И пожалуйста обясните что к чему, и скиньте что-то толковое для чтение про перезагрузку операторов. На отдельных примерах понять всю перезагрузку сложно, поскольку она там относиться к отдельным случаям.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2017, 21:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора индексации (C++):

Перегрузка оператора индексации [] - C++
Имеется некоторый класс почти массив. &quot;Почти&quot; - потому что элементы лежат в памяти не по байтам, а по битам и, соответственно, для...

Перегрузка оператора индексации - C++
class matrix{ double **c; int m;//кол-во строк int n;//кол-во столбцов } - часть кода подскажите, пож-ста, как перегрузить ()...

Перегрузка оператора индексации - C++
Можно ли зоздать в своем классе перегрузку оператора , но с двойными скобками вроде? int &amp;operator(int m,int n) { /*.....*/}

Перегрузка оператора индексации [] - C++
Необходимо перегрузить оператор индексации двумя способами, первый я реализовал #pragma once #include &lt;iostream&gt; using namespace...

Перегрузка оператора индексации и присваивания (C++) - C++
Доброго времени суток уважаемые форумчане. Возникла проблема Допустим у меня есть класс, в котором находится некий массив и нужно...

Перегрузка оператора индексации в списке - C++
Доброго времени суток. Имеется список, внутри которого соответственно структура, имеющая элемент данных int и две ссылки вперед/назад ...

2
Peoples
1172 / 677 / 426
Регистрация: 06.02.2016
Сообщений: 1,782
Записей в блоге: 13
Завершенные тесты: 4
07.04.2017, 21:55 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
double&  MyVectorClass::operator[](int j){
        return numbers[j];
      };
1
TeachME
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 24
08.04.2017, 12:15  [ТС] #3
Это не работает:
MyVectorClass.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once 
 
namespace program
{
    class MyVectorClass
    {
    private:
    double *numbers;
    int SizeOfArray;
    public:
        MyVectorClass();
        MyVectorClass(int size);
        ~MyVectorClass();
        double& operator[](int j);
   
    };
}
MyVectorClass.cpp
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
 #include "stdafx.h"
  #include "MyVectorClass.h"
  #include <iostream>
  using namespace std;
namespace program
{     
      MyVectorClass::MyVectorClass()
      {
        numbers=0;
        SizeOfArray=0;
      };
      MyVectorClass::MyVectorClass(int size)
      {
          SizeOfArray=size;
          numbers=new double [SizeOfArray];
          for (int i=0;i<SizeOfArray;i++)
          {
              numbers[i]=0;
          }
      }
      MyVectorClass::~MyVectorClass()
      {
      delete [] numbers;
      };    
      MyVectorClass::MyVectorClass(const MyVectorClass&)
      {};
      double&  MyVectorClass::operator[](int j){
        return numbers[j];
      };
      
}
Добавлено через 1 минуту
Я извиняюсь, не заметил что скинул вместо header'a cpp код.

Добавлено через 13 часов 49 минут
Решил вопрос.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2017, 12:15
Привет! Вот еще темы с ответами:

Перегрузка оператора индексации для связанного списка - C++
Доброго времени суток!:) Требуется перегрузить оператор индексации для связанного списка, я так понимаю в роли списка должны выступать...

Перегрузка оператора индексации в одном классе и использование в другом - C++
Вообщем проблема состоит в том, что не понимаю как это сделать. Есть класс Document в нем есть вектор vec состоящий из Item'ов. В классе...

Перегрузка оператора индексации для класса плохо себя ведёт - C++
Собственно, есть такое дело. #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; ...

Перегрузка индексации - C++
Здраствуйте. Подскажите пожалуйста, как перегрузить операцию двойной индексации. Это нужно чтобы получить доступ к элементу двумерного...


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

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

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