teyeheimans
Nieuwe gebruiker
- Lid geworden
- 8 apr 2006
- Berichten
- 4
Hej All,
Ik probeer het singleton pattern toe te passen op een managed c++ class. Dit wil echter niet echt lukken. In een unmanaged class wil het wel:
Star.h
Star.cpp
bovenstaand werkt dus GOED.
Echter, dit werkt dus niet:
RectangleDrawer.h
RectangleDrawer.cpp
Dit werkt dus NIET.
Lijst met errors:
Iemand een idee wat ik fout doe?
Ik probeer het singleton pattern toe te passen op een managed c++ class. Dit wil echter niet echt lukken. In een unmanaged class wil het wel:
Star.h
Code:
class Star : public State
{
private:
static Star *theInstance;
public:
static Star *instance();
void handle( Filter &filter, char n );
};
Star.cpp
Code:
Star* Star::theInstance = NULL;
Star* Star::instance()
{
if(theInstance == NULL) theInstance = new Star();
return theInstance;
}
void Star::handle( Filter &filter, char n )
{
// ...
}
bovenstaand werkt dus GOED.
Echter, dit werkt dus niet:
RectangleDrawer.h
Code:
namespace Opdracht5
{
using namespace System::Drawing;
ref class RectangleDrawer : ShapeDrawer
{
private:
static RectangleDrawer^ instance;
RectangleDrawer() {};
public:
virtual void DrawShape( Graphics ^g, int x, int y, int w, int h ) override;
static RectangleDrawer^ getInstance();
};
}
RectangleDrawer.cpp
Code:
using namespace System::Drawing;
Opdracht5::RectangleDrawer::instance = NULL;
RectangleDrawer^ Opdracht5::RectangleDrawer::getInstance()
{
if(instance == NULL) instance = gcnew RetangleDrawer();
return instance;
}
void Opdracht5::RectangleDrawer::DrawShape( Graphics ^g, int x, int y, int w, int h )
{
// ...
}
Dit werkt dus NIET.
Lijst met errors:
Code:
Error 1 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\map\Visual Studio 2005\Projects\DesignPatterns\Opdracht5\RectangleDrawer.cpp 13
Error 2 error C2373: 'instance' : redefinition; different type modifiers c:\map\Visual Studio 2005\Projects\DesignPatterns\Opdracht5\RectangleDrawer.cpp 13
Error 3 error C3366: 'Opdracht5::RectangleDrawer::instance' : static data members of managed types must be defined within the class definition c:\map\Visual Studio 2005\Projects\DesignPatterns\Opdracht5\RectangleDrawer.cpp 13
Error 4 error C2065: 'NULL' : undeclared identifier c:\map\Visual Studio 2005\Projects\DesignPatterns\Opdracht5\RectangleDrawer.cpp 13
Error 5 error C2556: 'int Opdracht5::RectangleDrawer::getInstance(void)' : overloaded function differs only by return type from 'Opdracht5::RectangleDrawer ^Opdracht5::RectangleDrawer::getInstance(void)' c:\map\Visual Studio 2005\Projects\DesignPatterns\Opdracht5\RectangleDrawer.cpp 15
Error 6 error C2373: 'Opdracht5::RectangleDrawer::getInstance' : redefinition; different type modifiers c:\map\Projects\DesignPatterns\Opdracht5\RectangleDrawer.cpp 15
Error 7 error C2061: syntax error : identifier 'RetangleDrawer' c:\map\Visual Studio 2005\Projects\DesignPatterns\Opdracht5\RectangleDrawer.cpp 16
Iemand een idee wat ik fout doe?
Laatst bewerkt: