Проблема с перебором объекта - PullRequest
1 голос
/ 28 мая 2020

У меня есть объект, содержащий вектор. Я хочу перебрать этот объект, получая элементы в этом векторе. Это нормально, пока я только читаю. Написание - это совсем другая история.

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

#include <vector>
using std::vector;

class data_vector {
private:
  vector<float> coefficients;
public:
  data_vector() : coefficients( vector<float>(5,1.) ) {};
  void trace() { cout << coefficients[0] << endl; };

private:
  int seek{0};
public:
  data_vector &begin() { seek = 0; return *this; };
  data_vector &end()   { seek = coefficients.size(); return *this; };
  bool operator!=( const data_vector &test ) const {
    return seek<test.seek; };
  void operator++() { seek++; };
  float &operator*() { return coefficients.at(seek); };
};

int main() {

  data_vector
    outdata;
  outdata.trace();
  for ( float &d : outdata )
    d = 2. ;
  outdata.trace();

  return 0;
}

Я думал, что l oop изменит объект 1. Я использую ссылку на объект-итератор 2. Функция разыменования дает ссылку, но это не так ' т:

clang++ -std=c++17 -o tester test.cxx && ./tester
1
1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...