/ / Перевантаження оператора ++ для збільшення ітератора - c ++, visual studio-2010, ітератор, оператори, оператор-перевантаження

Перевантаження оператора ++ для збільшення ітератора - c ++, visual studio-2010, ітератор, оператори, оператор-перевантаження

В даний час я створюю квадратний список, і одне з вимог - перевантажити оператор pre-and postfix ++.

Я намагався перевантажити оператор ++ у моєму файлі .hpp для збільшення ітератора.Але при виклику оператора ++ він не викликає перевантажений код і просто використовує за замовчуванням.

iterator& operator ++ () {  // pre-increment
std::list<int>::iterator i = list_Values.begin();
advance(i,1);
return &*i;
}

iterator operator ++ (int) { // post-increment
std::list<int>::iterator i = list_Values.begin();
advance(i,1);
return &*i;
}

Я намагаюся викликати оператор ++ таким чином:

int* test = sqrList.begin();
++test;

test++;

Відповіді:

2 для відповіді № 1
int* test = sqrList.begin();
++test;
test++;

Ви збільшуєте a int*, а так як там ні int* клас продовжити, ти не можеш мати насправді створені оператори для цього типу.

Замість цього створіть оператори для правильного типу. Ви, ймовірно, майте на увазі свій власний тип ітератора.


2 для відповіді № 2

Ви повинні оголосити оператора всередині класу.

class Iterator
{
public:
Iterator& operator ++ ()
{
return *this;
}
Iterator operator ++ (int)
{
return *this;
}
};

Крім того, чому ви використовуєте return &*i;?

Зверніть увагу, що ці оператори повинні бути оголошені всередині Iterator клас, не всередині контейнера.