在静态方法里面不能访问私有类成员?

我有以下设置:

//.h class Cell { private: POINT mCellStartingPoint; int mXoffset; int mYoffset; public: static void DrawRowOfPixels(int yoff); Cell(); ~Cell(); }; //.cpp void Cell::DrawRowOfPixels(int yoff) { HDC dc = GetDC(NULL); COLORREF red = 0xFF0000; for(int i = mCellStartingPoint.x; i < mXoffset; i++) { SetPixel(dc, mCellStartingPoint.x + i, mCellStartingPoint + yoff, red); } } 

但是,在.cpp文件中实现DrawRowOfPixels()方法时,我得到Cell的所有成员variables的错误。 (即mCellStartingpoint,mXoffset和mYoffset)

错误C2228:'.x'的左边必须有class / struct / union

错误C2597:对非静态成员'Cell :: mXoffset'的非法引用

错误C3867:'Cell :: mXoffset':函数调用缺less参数列表; 使用'&Cell :: mXoffset'创build一个指向成员的指针

错误:非静态成员引用必须是相对于特定对象的

我知道我可能在做一些非常愚蠢的事情,但是这里发生了什么? 为什么我不能在我的静态成员函数内使用我的私有成员variables,如我应该能够?

Solutions Collecting From Web of "在静态方法里面不能访问私有类成员?"

除非在成员函数中明确地提供对象实例,否则不能在static方法内访问非静态成员(将对象实例显式地作为参数传递或使用可在函数内部访问的全局实例

对于一个非静态成员函数,一个隐含的指针作为第一个参数传递给函数。 this指针在成员函数里被解引用来访问成员。 static成员不会传递隐式的this指针,所以你不能访问函数内部的非静态成员,除非你在成员函数中明确地获取对象。