Original Post
When I compile my project with dev-c++ or code blocks(I didn't try other compilers) it gives lots of undefined reference errors for my logger class. My logger class is made a singleton by inhereting from a singleton class: what am I doing wrong? Errors:
[source="cpp"]
template <class stclass>
class singleton
{
static stclass* stpointer;
protected:
singleton()
{
stpointer = 0;
}
~singleton()
{
delete stpointer;
}
public:
static stclass* getstpointer()
{
if (stpointer == 0)
{
stpointer = new stclass;
}
return stpointer;
}
};
class loggerc: public singleton<loggerc>
{
void addmessage(string);
};
class something
{
loggerc* logger;
something()
{
logger = loggerc::getstpointer();
}
dosomething()
{
logger->addmessage("I've added a message to the logger");
}
};
::getstpointer()]+0x37)||undefined reference to `singleton<loggerc>::stpointer'|
::getstpointer()]+0x9e)||undefined reference to `singleton<loggerc>::stpointer'|
::getstpointer()]+0xa3)||undefined reference to `singleton<loggerc>::stpointer'|
.objs\logger.o:logger.cpp:(.text+0x16b)||undefined reference to `singleton<loggerc>::singleton()'|
.objs\logger.o:logger.cpp:(.text+0x2cf)||undefined reference to `singleton<loggerc>::~singleton()'|
.objs\logger.o:logger.cpp:(.text+0x341)||undefined reference to `singleton<loggerc>::singleton()'|
.objs\logger.o:logger.cpp:(.text+0x4a5)||undefined reference to `singleton<loggerc>::~singleton()'|
.objs\logger.o:logger.cpp:(.text+0x517)||undefined reference to `singleton<loggerc>::singleton()'|
.objs\logger.o:logger.cpp:(.text+0x67a)||undefined reference to `singleton<loggerc>::~singleton()'|
.objs\logger.o:logger.cpp:(.text+0x6ed)||undefined reference to `singleton<loggerc>::singleton()'|
.objs\logger.o:logger.cpp:(.text+0x850)||undefined reference to `singleton<loggerc>::~singleton()'|
.objs\logger.o:logger.cpp:(.text+0x9d9)||undefined reference to `singleton<loggerc>::~singleton()'|
.objs\logger.o:logger.cpp:(.text+0xa03)||undefined reference to `singleton<loggerc>::~singleton()'|
.objs\logger.o:logger.cpp:(.text+0xb73)||undefined reference to `singleton<loggerc>::~singleton()'|
.objs\logger.o:logger.cpp:(.text+0xb9d)||undefined reference to `singleton<loggerc>::~singleton()'|
[Edited by - d1rk on November 30, 2008 7:37:09 AM]