xcd*_*n05 1 c++ windows methods static class
我有以下设置:
//.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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在.cpp文件中实现DrawRowOfPixels()方法时,我会在Cell类的所有成员变量中获得错误.(即mCellStartingpoint,mXoffset和mYoffset)
错误C2228:'.x'的左边必须有class/struct/union
错误C2597:非法引用非静态成员'Cell :: mXoffset'
错误C3867:'Cell :: mXoffset':函数调用缺少参数列表; 使用'&Cell :: mXoffset'创建指向成员的指针
错误:非静态成员引用必须与特定对象相关
我知道我可能正在做一些非常愚蠢的事情,但是这里发生了什么?为什么我不能像我应该能够在我的静态成员函数中使用我的私有成员变量?
Alo*_*ave 14
static除非在成员函数中显式提供对象实例,否则无法访问方法内的非静态成员.(将对象实例显式地作为参数传递或使用可在函数内访问的全局实例)
对于非静态成员函数,隐式this指针作为函数的第一个参数传递.该this指针被解除引用的成员函数内部访问成员.static成员不会使用隐式this指针传递,因此除非您在成员函数中显式获取对象,否则无法访问函数内的非静态成员.