Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
TeachME
0 / 0 / 3
Регистрация: 10.12.2016
Сообщений: 40
#1

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

07.04.2017, 21:53. Просмотров 286. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2017, 21:53
Ответы с готовыми решениями:

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

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

Перегрузка оператора индексации []
Необходимо перегрузить оператор индексации двумя способами, первый я...

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

Перегрузка оператора индексации в списке
Доброго времени суток. Имеется список, внутри которого соответственно...

2
Peoples
1283 / 788 / 734
Регистрация: 06.02.2016
Сообщений: 2,130
Записей в блоге: 17
Завершенные тесты: 4
07.04.2017, 21:55 #2
C++
1
2
3
double&  MyVectorClass::operator[](int j){
        return numbers[j];
      };
1
TeachME
0 / 0 / 3
Регистрация: 10.12.2016
Сообщений: 40
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++)
Доброго времени суток уважаемые форумчане. Возникла проблема Допустим у меня...

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

Перегрузка оператора индексации в одном классе и использование в другом
Вообщем проблема состоит в том, что не понимаю как это сделать. Есть класс...


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

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

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