2017-01-23 41 views
0
#include <string> 
#include <map> 

namespace myNamespace 
{ 
    struct MyStruct 
    { 
     static std::map<int, std::string> idNameMap; 
     // some other static properties 
    }; 

    class MyClass 
    { 
    private: 
     void myMethod() { 
      std::map<int, std::string>& myMap = MyStruct::idNameMap; // C2062: type 'int' unexpected 

      for (auto& it : myMap) 
      { 
       // do some stuff with map values 
      } 
     } 
    }; 
} 

我想引用MyStruct中的靜態映射屬性,但它產生此錯誤。我不確定是否需要更多的上下文,但如果是這樣,請讓我知道。錯誤C2062:鍵入意外時,引用std :: map

+0

你執行#included ,對不對? – roalz

+0

@roalz:我確實。將添加到澄清 – sookie

+1

您應該編輯您的問題,以提供一個最小的,完整的和可驗證的示例:http://stackoverflow.com/help/mcve – roalz

回答

1

讓我們再試試......

你可能有一個不正確地終止定義的某個地方在代碼中,之前只是一個int變量,不包括在你的問題。

I.e.與此除了您發佈的代碼,你會得到完全相同的編譯器錯誤:

#include <string> 
#include <map> 

double x = 42.0, // ERROR! incorrectly terminated before an 'int' variable 
int a = 0; 

namespace myNamespace 
{ 
... 
+0

好的,沒有以逗號結尾的變量聲明 – sookie

+0

它可能不是逗號,這是可能的原因之一,但它應該在'int'之前。 – roalz

+0

貌似在包含cpp的頭文件後可能包含stdafx.h問題可能導致了問題 – sookie