オブジェクトを参照する必要があるグローバルに宣言された静的関数がありますが、そうすると、「宣言されていない識別子」エラーが発生します。
ここに私のコードのサンプルがあります
#pragma once
#include "stdafx.h"
#include <vector>
#include "Trigger.h"
using namespace std;
namespace Gamma_Globals
{
static vector<void*> gvTriggers;
}
static LPARAM CALLBACK ProgramWndProc(HWND, UINT, WPARAM, LPARAM);
static LPARAM CALLBACK ProgramWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_KEYUP:
{
for (int i = 0; i < Gamma_Globals::gvTriggers.size(); i++)
{
Trigger t = Gamma_Globals::gvTriggers[i];
}
}
default: return DefWindowProc(hWnd, uMsg, wParam, lParam); break;
}
return 0;
}
この問題は WM_KEYUP の場合に発生します。「Trigger t」を設定しようとすると、「'Trigger' : undeclared identifier.」というエラーが表示されます。ProgramWndProc から Trigger オブジェクトを参照するにはどうすればよいですか?
ありがとう!
リクエストに応じて、ここに Trigger.h のコピーがあります
#pragma once
#include "Noun.h"
#include "TermFactory.h"
#include "Globals.h"
using namespace std;
class Trigger
{
public:
enum TRIGGER_TYPE {NONE, ONKEYPRESS, ONMOUSEPRESS};
Trigger(void*);
Trigger(LPTSTR trigger, LPTSTR action, Gamma_Globals::TRIGGER_TIME);
~Trigger(void);
VOID Perform();
TRIGGER_TYPE GetType();
private:
LPTSTR lpCondition;
LPTSTR lpAction;
Gamma_Globals::TRIGGER_TIME triggerTime;
vector<Noun*> vNouns;
TRIGGER_TYPE triggerType;
VOID LoadAction(LPTSTR Action);
HRESULT LoadCondition(LPTSTR Condition);
};