我尝试找到有关重载operator ++ for pointer的任何内容,但没有结果。
有我的代码。
struct Item
{
int amount;
Item(int a){ this->amount = a; };
Item& operator++()
{
this->amount++;
return *this;
};
};
int main()
{
Item *I = new Item(5);
++*I;
return 0;
}
是否有任何选项只能在主函数中编写
++I;
(抱歉我的英文)
答案 0 :(得分:6)
不要使用指针(无论如何都不需要它):
Item I(5);
++I;
答案 1 :(得分:2)
您可以手动编写(如果您真的想使用指针)
I->operator++();
答案 2 :(得分:1)
不,你不能为指针类型重载运算符。
定义自己的operator++
时,函数的第一个参数必须是 class - 或 enumeration-type ,如[over.inc]p1
中所指定在C ++标准中:
名为
operator++
的用户定义函数实现了前缀和后缀++
运算符。如果此函数是没有参数的成员函数,或者是具有类或枚举类型的一个参数的非成员函数,则它为该类型的对象定义前缀增量运算符++
。
但我真的很想打operator++
而不必明确写*ptr
...
你可以,但它不是最漂亮的代码行:
ptr->operator++ (); // call member function `operator++`
注意:考虑仅使用Item *I = new Item (5); ++*I
,而不是Item I (5); ++I
,不需要在代码段中使用指针。 子>