2013-02-15 99 views
0

我想在C#中重载运算符'++',但是当我编写下面的代码时,VS 2012会给我一个错误消息。重载的一元运算符++需要一个参数

public LogItem operator ++() 
    { 
     ++ visitTimes; 
    } 

的错误是重载单目运算符++需要一个参数

而且我这里的 LogItem的定义:

 public class LogItem 
    { 
     /** 
     * Constructor 
     */ 
     public LogItem(string ip) 
     { 
      ipAddress = ip; 
      visitTimes = 0; 
     } 

     /** 
     * Operator Overload Function 
     */ 
     public LogItem operator ++() 
     { 
      ++ visitTimes; 
     } 

     public string ipAddress { get; private set; } 
     public string location { get; set; } 
     public int visitTimes { get; private set; } 
    } 

我应该怎么做超负荷运营商'++'?

+0

请发送您的完整代码 – 2013-02-15 04:45:51

+0

我已经发布了上面的完整代码。 – 2013-02-15 04:57:35

回答

5

操作员需要是其定义类的静态成员和在++情况下需要该类型的参数:

public class LogItem 
{ 
    .... 
    public static LogItem operator ++(LogItem item) 
    { 
     item.visitTimes ++; 
     return item; 
    } 
} 

参见Operator overloading tutorial MSDN上为更多的样品。

+0

非常感谢〜我已经解决了〜! – 2013-02-15 04:55:11