我在 .hpp 文件中为++ 创建了一个重载运算符,然后在 .hpp 文件中创建了一个调用它的函数。 .cpp 文件然后调用该函数,但是当函数命中++ 代码时,它不会进入重载运算符,而是使用++ 的默认运算符。为什么它不使用我重载的运算符?
这里是++ 的运算符:
iterator& operator ++ () { // pre-increment
std::list<value_type>::iterator i = listOfValues.begin();
advance(i,1);
return &*i;
}
Square_List operator ++ (int) { // post-increment
std::list<value_type>::iterator i = listOfValues.begin();
advance(i,1);
return &*i;
}
下面是使用它的函数:
template <typename A_>
void testerIncrement(A_ toInc)
{
toInc = listOfValues.begin();
cout << "\n" << *toInc;
++toInc;
cout << "\n" << *toInc;
++toInc;
}
最后是.cpp 文件中函数的调用
ca.testerIncrement(ca.listOfValues.begin());
最佳答案
您可以使用具有一个类类型参数或对类类型的引用的非成员函数运算符,或者使用没有参数的成员函数运算符来重载前缀增量运算符++。
看来您使用的是非成员(member)运营商。所以你的语法应该是 无效运算符++(迭代器&);//字首 和 void operator++(Square_List, int);//后缀。
关于c++ - 为什么它不使用我重载的运算符来进行++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338208/