我正在尝试为这样的类定义一个运算符:
file.h
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<<’
有什么想法吗?
答案 0 :(得分:3)
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;
答案 1 :(得分:1)
左侧必须是对象,而不是指针,请尝试:
(*p1) << p2;
答案 2 :(得分:0)
您声明了指向p1的指针,并在指针上调用操作符。 尝试调用operator(* p1)而不是p1。