SmartVessel

Foucs on C++

博客园 首页 新随笔 联系 订阅 管理
'static' can indeed be used in C++ to do what you want - to create a Static Member Function.
The compiler message is actually telling you that the 'static' keyword is not valid on the definition of the method, it should only be used in the class definition.
So the following compiles
class Rect
{
private:
    
int x;
    
int y;
    
int width;
    
int height;
public:
    
static bool intersects(Rect& a, Rect& b);  //Use 'static' in declaration
};

bool Rect::intersects(Rect& a, Rect& b)    //no 'static' - compiler know that from class declaration
{
    
return !(a.x > b.x+(b.width-1|| a.x+(a.width-1< b.x || a.y > b.y+(b.height-1|| a.y+(a.height-1< b.y);
}

int main()
{
    Rect myRect1,myRect2;
    
bool theSame;
    theSame 
= Rect::intersects(myRect1,myRect2);
    
return 0;
};

I have changed the result type to bool, as that appears to be your intent.
I'll leave it to one of the experts to explain why static should only appear in the declaration - I sometimes feel the real reason for things like that are to make life harder for people new to the language:-)
posted on 2011-05-05 15:12  SmartVessel  阅读(351)  评论(0编辑  收藏  举报