我有自己的Class 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;
}
答案 0 :(得分:-2)
我应该这样声明:
void operator--(int);
并这样实现:
void Vector::operator--(int) {
if (size>1) size--;
else std::cout << "Only one element in vector.\n";
}
此(int)帮助编译器更改前缀和后缀的增量或减量。
一个例子:
struct A {
void operator --(int) { std::cout << "Postfix\n"; }
void operator --() { std::cout << "Prefix\n"; }
};
int main()
{
A a;
a--;
--a;
}
感谢@PaulMcKenzie提供了link。