C ++运算符意外错误

时间:2012-02-01 11:50:53

标签: c++ operator-overloading

我正在尝试为这样的类定义一个运算符:

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<<’

有什么想法吗?

3 个答案:

答案 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。