Олег Шалаев
1

присвоение значения элементу векторного класса

09.10.2009, 18:31. Показов 1235. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал я класс для массива (значений функции на отрезке):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class DoubleArray {
public:
....
  double operator[] (int index);
  DoubleArray operator= (const DoubleArray &rhs);
  DoubleArray operator+ (DoubleArray a);
....
  explicit DoubleArray (int sz = DefaultArraySize);
  DoubleArray (double *array, int array_size);
  DoubleArray (const DoubleArray &rhs);
  ~DoubleArray () {delete[] ia;};
private:
  int _size;
  double *ia;
  static const int DefaultArraySize = 1;
};
...
double DoubleArray::operator[] (int index) { assert(index >= 0 && index < _size); return ia[index];}
<-- эта функция читает элементы моего массива, например
double a1[4]={0.1,1.2,2.3,3.4};
DoubleArray b1(a1,4);
double thisValue=b1[2]; // <-- третий элемент=2.3
Вопрос: как мне красиво присвоить элементу моего массива новое значение?
Красиво -- это так: b1[3]=thisValue;
Спасибо!
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2009, 18:31
Ответы с готовыми решениями:

Указатели и классы: присвоение значения элементу массива, который является полем класса
Доброго времени суток, делал задание, где надо создать класс, полем которого будет массив...

Присвоение значения элементу списка
Здравствуйте. У меня есть односвязный список состоящий фамилия, стиль, результат. В задании дано,...

Присвоение значения случайному элементу массива
Всем привет. Такой вопрос. Вот есть у меня массив, скажем, A, состоящий из десяти элементов....

Присвоение значения элементу двумерного массива
Почему я могу сделать так: Coors = 2560.6301, Coors = -1289.7698, Coors = 1044.1250;, а так: Coors...

4
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
09.10.2009, 18:41 2
C++
1
2
3
double &operator[] (int index);
.............
double &DoubleArray::operator[] (int index) { assert(index >= 0 && index < _size); return ia[index];}
1
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
09.10.2009, 18:50 3
На самом деле здесь нужна пара функций:
C++
1
2
double operator[](int index) const;  // для чтения
double& operator[](int index);  // для записи
1
Олег Шалаев
09.10.2009, 19:26 4
Спасибо CheshireCat, но g++ ругается если я добавлю вторую функцию:
doubleArray.h:8: error: ‘double& DoubleArray::operator[](int)’ cannot be overloaded
doubleArray.h:7: error: with ‘double DoubleArray::operator[](int)’
Правильный код подсказал ISergey:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class DoubleArray {
public:
....
double& operator[] (int index); // <-- добавил сюда амперсанд
DoubleArray operator= (const DoubleArray &rhs);
DoubleArray operator+ (DoubleArray a);
....
explicit DoubleArray (int sz = DefaultArraySize);
DoubleArray (double *array, int array_size);
DoubleArray (const DoubleArray &rhs);
~DoubleArray () {delete[] ia;};
private:
int _size;
double *ia;
static const int DefaultArraySize = 1;
};
...
double& DoubleArray::operator[] (int index) { assert(index >= 0 && index < _size); return ia[index];} // <-- добавил сюда амперсанд
double a1[4]={0.1,1.2,2.3,3.4};
DoubleArray b1(a1,4);
double thisValue=b1[2];
b1[3]=thisValue;
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
09.10.2009, 21:36 5
Цитата Сообщение от Олег Шалаев Посмотреть сообщение
Спасибо CheshireCat, но g++ ругается если я добавлю вторую функцию......
Ну эт естессно, что ругается. Ты квалификатор const забыл.
1
09.10.2009, 21:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2009, 21:36
Помогаю со студенческими работами здесь

Присвоение значения переменной класса через конструктор
#include &lt;iostream&gt; using namespace std; class Help { int userID; public: Help(int id)...

Встроенная функция вектора из векторного класса
template &lt;typename TypeContainer, typename Type, typename Policy&gt; class Container { public: ......

присвоение значения
Здравствуйте! можно ли каким-нибудь образом присвоить значению int значение char? К примеру: у...

Присвоение указателю на базовый класс адреса производного класса
Когда наследую как public,всё норм,как private - ошибка. Как сделать тогда,чтобы открылся...

Присвоение значения указателю
Как можно, вот так, присваивать указателю значение? Разве, указатель не должен всегда содержать...

Присвоение указателю члену класса нового адреса, ошибка компиляции
Идея в том, чтобы хранить в отдельном списке объекты типа B и передавать в объект типа A указатель...


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

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

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