我正在尝试为此类定义一个运算符:

文件

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/

10-13 02:40