MySpace

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  18 随笔 :: 2 文章 :: 10 评论 :: 0 Trackbacks

写了一段代码是这样的

enum day
{
 Sunday, Monday, Tuesday,
 Wednesday, Thursday, Friday,
 Saturday, not_a_day
};

day* operator++(day *d)
{
 //d = d + 1;
 *d = (day)(*d + 1);
 return d;
}

编译出现了错误:error C2803: “operator ++”必须至少有一个类类型的形参

难道运算符的重载参数不能为指针,查阅了MSDN 得到如下结果

-----------------------------------------------------------------------------------------------------------------

错误消息
“operator operator”必须至少有一个类类型的形参


重载运算符缺少类类型的参数。

您需要通过引用(不是使用指针,而是使用引用)或值至少传递一个参数,从而能够编写“a < b”(a 和 b 均为类 A 类型)。

如果两个参数都是指针,结果将是指针地址的纯比较,并且将不使用用户定义的转换。

下面的示例生成 C2803:


// C2803.cpp
// compile with: /c
class A{};
bool operator< (const A *left, const A *right);   // C2803
// try the following line instead
// bool operator< (const A& left, const A& right);

posted on 2008-05-29 15:57 yang-chunlei 阅读(297) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理