В даний час я створюю квадратний список, і одне з вимог - перевантажити оператор 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 для відповіді № 1int* 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
клас, не всередині контейнера.