我正在尝试为此类定义一个运算符:
文件
bool operator<<(XMLPair *p2);
file.cpp
bool XMLPair::operator<<(XMLPair *p2)
{
....
}
当我尝试在这样的主程序中使用它时
XMLPair *p1, *p2 ;
...
p1<<p2
它说
error: invalid operands of types ‘XMLPair*’ and ‘XMLPair*’ to binary ‘operator<<’
任何想法?
最佳答案
p1
是一个指针;成员运算符的左手参数必须是一个对象。因此,您需要:
(*p1) << p2;
尽管将右手参数用作引用会更加惯用,并且仅在确实需要使用指针时才使用:
// Remove `const` as necessary, if the operator needs to modify either operand
bool operator<<(XMLPair const & p2) const;
XMLPair p1, p2;
p1 << p2;
关于c++ - C++运算符意外错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9095294/