T
Tristan
I'm developing a class which is to draw to a given graphics context i.e a
CClientDC in Visual C++. The problem I have it is that my functions implement a
specific interface which are platform independent and so do can't take in a
reference to a CClientDC in the parameter list.
As a result my class looks like:
class MSWinDisplayManager : public IDisplayManager
{
private:
CClientDC *winPointer;
public:
MSWinDisplayManager(CClientDC& win);
void drawPoint();
};
MSWinDisplayManager::MSWinDisplayManager(CClientDC& win)
{
winPointer = &win;
}
void MSWinDisplayManager::drawPoint()
{
COLORREF col;
col = RGB(0, 0, 255);
winPointer->SetPixel(10, 10, col);
}
The problem is that the user of this class may delete the CClientDC object that
winPointer points to:
CClientDC *winManager = new CClientDC(this);
MSWinDisplayManager winManager(*win);
Delete win;
winManager.draw(win);
How can my MSWinDisplayManager class detect that its winPointer variable is no
longer valid?
Many thanks.
Tristan.
CClientDC in Visual C++. The problem I have it is that my functions implement a
specific interface which are platform independent and so do can't take in a
reference to a CClientDC in the parameter list.
As a result my class looks like:
class MSWinDisplayManager : public IDisplayManager
{
private:
CClientDC *winPointer;
public:
MSWinDisplayManager(CClientDC& win);
void drawPoint();
};
MSWinDisplayManager::MSWinDisplayManager(CClientDC& win)
{
winPointer = &win;
}
void MSWinDisplayManager::drawPoint()
{
COLORREF col;
col = RGB(0, 0, 255);
winPointer->SetPixel(10, 10, col);
}
The problem is that the user of this class may delete the CClientDC object that
winPointer points to:
CClientDC *winManager = new CClientDC(this);
MSWinDisplayManager winManager(*win);
Delete win;
winManager.draw(win);
How can my MSWinDisplayManager class detect that its winPointer variable is no
longer valid?
Many thanks.
Tristan.