ヘッダファイルに構造体が定義されています。次に、構造体を使用しようとしているシングルトンクラスを持っています。別のクラスからResetVars()を呼び出すと、test.numResponses = "TEST"という行にヒットしたときにアクセス違反が発生します。私はこれが初期化と関係があると仮定していますが、私はそれを解決することができませんでした。私はC++を初めて使っているので、これを回避する方法はわかりません。助けてくれてありがとう。typdefへの書き込み時にC++アクセス違反が発生する
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();
[MCVE] – Slava
はなぜあなたが最初の場所で 'typedefをstruct'でC++が必要なのですか含むようにあなたの質問を編集してください? – Slava
クラスA.hにはstruct.h – baruti