Daved, please, if you could expand on that. I am having a similar problem as tezcatlipooca (with the undefined references). I have a class with some static members that are set by a static memeber function. It seems, however, that no matter what I do, the linker will not see a declaration. Here's some of my code:
Code:
//in file_manager.h
class file_manager
{
public:
enum {TAKEN = false, AVAILABLE = true};
static std::ofstream * bad_writer;
static std::ifstream * bad_reader;
static void set_bad_pointers();
file_manager();
~file_manager();
//so on and so forth.......
//.................
};
Then, in that class's source file "file_manager.cpp"
Code:
#include "file_manager.h"
//..............
file_manager::file_manager() : reader(), writer(), ws(AVAILABLE), rs(AVAILABLE)
{
//every time file_manager() is called, these statics are reinitialized. Fine.
set_bad_pointers();
}
file_manager::~file_manager()
{
if(ws == TAKEN || rs == TAKEN) throw unsafe_destruction();
}
//.................
void file_manager::set_bad_pointers()
{
bad_reader = reinterpret_cast<std::ifstream*>(0);
bad_writer = reinterpret_cast<std::ofstream*>(0);
}
and in the main file "main.cpp"
Code:
#include "file_manager.h"
int main(int argc, char *argv[])
{
file_manager fman;
std::ofstream * osptr;
file_manager::set_bad_pointers(); //even though file_manager() called it already...
if((osptr = fman.aquire_writer()) == file_manager::bad_writer)
{
std::cout << "Couldn't aquire ofstream pointer" << std::endl;
return EXIT_SUCCESS;
}
//...................
std::system("PAUSE");
return EXIT_SUCCESS;
}
And my grand total number of linking errors:
Code:
[Linker error] undefined reference to `file_manager::bad_writer'
[Linker error] undefined reference to `file_manager::bad_reader'
[Linker error] undefined reference to `file_manager::bad_writer'
[Linker error] undefined reference to `file_manager::bad_reader'
[Linker error] undefined reference to `file_manager::bad_writer'
[Linker error] undefined reference to `file_manager::bad_writer'
[Linker error] undefined reference to `file_manager::bad_reader'
[Linker error] undefined reference to `file_manager::bad_writer'
Any help is much appreciated.