(((settings.h)))
#include <map>
#include <string>
class cvar;
class settings
{
public:
void registerCvar( const std::string& name, cvar* newCvar );
// ...
private:
static std::map<std::string,cvar*> cvarRegistry;
};
(((settings.cpp)))
#include "settings.h"
void settings::registerCvar( const std::string& name, cvar* newCvar )
{
this->cvarRegistry[name] = cvar; // <-- ACCESS VIOLATION
}
// Static member initialization
std::map<std::string,cvar*> settings::cvarRegistry;
(((cvar.h)))
class cvar
{
public:
cvar( const char *cvarName );
// ...
};
(((cvar.cpp)))
#include "settings.h"
cvar::cvar( const char *cvarName )
{
// ...
settings cvarSettings;
cvarSettings.registerCvar( cvarName, this );
}