Je veux avoir un std :: unordered_map global statique dans le cpp de mon point d'entrée pour mon serveur COM.global std :: unordered_map com problèmes de démarrage du serveur
Code d'en-tête pertinente:
typedef unordered_map<HWND,IMyInterface*> MyMapType;
Organe concerné:
static MyMapType MyMap;
void MyFunction(HWND hWnd, IMyInterface* pObj){
MyMap[hWnd] = pObj;
}
HINSTANCE g_hInstModule = NULL;
BOOL WINAPI DllMain (__in HINSTANCE hInstDLL, __in DWORD fdwReason, __in LPVOID lpvReserved)
{
if(fdwReason == DLL_PROCESS_ATTACH)
{
g_hInstModule = hInstDLL;
return true;
}
else if(fdwReason == DLL_PROCESS_DETACH)
{
return true;
}
return false;
}
MyCoClass::MyCoClass()
{
DRM_Refcount = 1;
}
HRESULT STDMETHODCALLTYPE MyCoClass::InitMyCoClass()
{
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
//replace with make window code
MyFunction(hWnd,ISomeInterface);
return S_OK;
}
La seule façon que je peux obtenir ce travail est d'être fait un pointeur map_type et la création d'une instance de map_type sur le tas et pointant dessus avec le pointeur global. :/
POURQUOI?
Votre "code d'en-tête pertinent" ne peut pas être correct. 'unordered_map' est un template. Que voulez-vous dire par "la seule façon dont je peux obtenir ce travail est ..." Quelles erreurs obtenez-vous avec le code comme écrit si vous corrigez le typedef? –
Eh bien, je ne suis pas sûr de savoir comment corriger la mise en forme du * modèle * HWND, IMyInterface * end_template * (comme il est là, il ne montre pas sur le post):/et je ne reçois pas d'erreurs comme ci-dessus compile et court et puis j'obtiens un peu de folie tout en essayant d'accéder à la carte. –
Ahhh; J'ai corrigé le formatage pour vous. La mise en retrait des lignes sur quatre espaces entraîne leur rendu sous forme de code; aucune étiquette de pré ou de code n'est requise. –