It's not necessary to define a member function as static. Often a static member is defined that holds the single instance to make accessing the class neater:
myClass.h file
class myClass{
static myClass *inst; // singleton class instance
int somePrivateVar;
public:
int someFn();
int someVar;
myClass();
~myClass();
myClass *getInstance();
// etc.
};
myClass.cpp file
#include "myClass.h"
myClass *myClass::inst = NULL;
myClass::myClass(){
somePrivateVar = 99; // init the vars as usual
}
myClass::~myClass(){
if(inst)
delete inst;
}
myClass *myClass::getInstance(){
if(!inst){
inst = new myClass;
}
return inst;
}
Then to access the class from any module/class/etc. use:
myClass *cl = myClass::getInstance();
cl->someFn();
// etc.