我有以下设置:无法访问静态方法中的私有类成员?
//.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);
}
}
然而,在实施DrawRowOfPixels时()在.cpp文件的方法,我在所有的细胞类的成员变量的出现错误。 (即mCellStartingpoint,mXoffset和mYoffset)
error C2228: left of '.x' must have class/struct/union
error C2597: illegal reference to non-static member 'Cell::mXoffset'
error C3867: 'Cell::mXoffset': function call missing argument list; use '&Cell::mXoffset' to create a pointer to member
error: A nonstatic member reference must be relative to a specific object
我知道我可能做一些非常愚蠢的,但是这是怎么回事呢?为什么我不能在我的静态成员函数中使用我的私有成员变量,就像我应该能够的那样?
静态成员函数不能访问非静态数据成员是合乎逻辑的原因。它是静态成员函数定义的一部分。 – chris 2013-04-06 05:19:20
如果你有一个**对象**与这些数据成员一起使用,它可能会非常有帮助。您正在使用静态类功能。它没有任何对象,因此没有成员。使函数成为非静态函数,将参数传递为参数,或者使成员静态。以上任何一项都可以工作。选择合适的人来满足你的需求。 – WhozCraig 2013-04-06 05:20:07
所以我几乎无法访问它们呢?我认为静态函数的要点是能够在没有对象的情况下被调用,但仍然具有与被对象调用相同的用途。 – xcdemon05 2013-04-06 05:21:26