Используя бинарный оператор "-" для вектора - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть свой собственный вектор класса, и я хотел бы создать оператор - удалить последний элемент в массиве.Но в моей реализации я получил ошибку:

binary "-": Vector не определяет этот оператор или преобразование в тип, приемлемый для предопределенного оператора.

Как мне это правильно объявить?

class Vector {
private:
    int *vect;
    int size;
public:
    void operator--();
}
void Vector::operator--() {
    int *tmp = vect;
    size--;
    vect = new int(size);
    for (int i = 0; i < size; i++) vect[i] = tmp[i];
    delete[] tmp;
}

1 Ответ

0 голосов
/ 26 ноября 2018

Я должен был объявить это так:

void operator--(int);

И реализовать следующим образом:

void Vector::operator--(int) {
    if (size>1) size--;
    else std::cout << "Only one element in vector.\n";
}

this (int) помогает компилятору различать префиксы и постфиксы приращения или уменьшения.

Пример:

struct A {
    void operator --(int) { std::cout << "Postfix\n"; }
    void operator --() { std::cout << "Prefix\n"; }
};

int main()
{
    A a;
    a--;
    --a;
}

Спасибо @PaulMcKenzie за ссылку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...