'static' can indeed be used in C++ to create a Static Member Function

'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:-)

你可能感兴趣的:(function)