Ich habe eine Struktur in einer Header-Datei definiert. Dann habe ich eine Singleton-Klasse, in der ich versuche, die Struktur zu verwenden. Wenn ich ResetVars() von einer anderen Klasse aufrufen, erhalte ich eine Zugriffsverletzung, wenn es die Zeile trifft, die test.numResponses = "TEST" angibt. Ich gehe davon aus, dass dies etwas mit Initialisierung zu tun hat, aber ich konnte es nicht lösen. Ich bin neu in C++ und ich habe keine Ahnung, wie ich das umgehen soll. Danke für jede Hilfe.C++ Zugriffsverletzung beim Schreiben in typdef Struktur
struct.h
typedef struct POLL_DATA
{
std::string numResponses;
std::string type;
std::string question;
} POLL_DATA;
ControlPolls.h
class ControlPolls
{
private:
static bool instanceFlag;
static ControlExitPolls *controlSingle;
ControlExitPolls();
POLL_DATA test;
public:
static ControlExitPolls* getInstance();
void ResetVars();
};
ControlPolls.cpp
#include "ControlPolls.h"
bool ControlPolls::instanceFlag = false;
ControlPolls* ControlPolls::controlSingle = NULL;
//Private Constructor
ControlExitPolls::ControlExitPolls()
{
};
//Get instance
ControlPolls* ControlPolls::getInstance()
{
if(!instanceFlag)
{
controlSingle = &ControlPolls();
instanceFlag = true;
return controlSingle;
}
else
{
return controlSingle;
}
}
void ControlExitPolls::ResetVars()
{
test.numResponses = "TEST";
}
callingClass.cpp
ControlPolls *controlSingleton;
controlSingleton = ControlPolls::getInstance();
controlSingleton->getInstance()->ResetVars();
Bearbeiten Sie Ihre Frage ein enthalten [MCVE] – Slava
Warum brauchen Sie 'typedef struct' in C++ in erster Linie? – Slava
Klasse A.h enthält struct.h – baruti