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

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

Войти
Регистрация
Восстановить пароль
 
Олег Шалаев
0 / 0 / 0
Регистрация: 06.10.2009
Сообщений: 2
#1

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

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

Написал я класс для массива (значений функции на отрезке):
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;
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2009, 18:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос присвоение значения элементу векторного класса (C++):

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

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

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

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

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

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

4
ISergey
Maniac
Эксперт С++
1395 / 906 / 56
Регистрация: 02.01.2009
Сообщений: 2,706
Записей в блоге: 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
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
09.10.2009, 18:50 #3
На самом деле здесь нужна пара функций:
C++
1
2
double operator[](int index) const;  // для чтения
double& operator[](int index);  // для записи
1
Олег Шалаев
0 / 0 / 0
Регистрация: 06.10.2009
Сообщений: 2
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;
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
09.10.2009, 21:36 #5
Цитата Сообщение от Олег Шалаев Посмотреть сообщение
Спасибо CheshireCat, но g++ ругается если я добавлю вторую функцию......
Ну эт естессно, что ругается. Ты квалификатор const забыл.
1
09.10.2009, 21:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2009, 21:36
Привет! Вот еще темы с ответами:

Присвоение указателю на базовый класс адреса производного класса - C++
Когда наследую как public,всё норм,как private - ошибка. Как сделать тогда,чтобы открылся конструктор? Base :: Base(); Не помогает ...

Присвоение значения указателю - C++
Как можно, вот так, присваивать указателю значение? Разве, указатель не должен всегда содержать адрес? const char* szString =...

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

Присвоение значения переменной в классе - C++
возможно ли присвоение значения переменной в классе? class xxx { public : void rrr(); public : int x=5; // ??? };


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

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

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