2012-03-29 41 views
0

由於Visual Studio 2008(使用Windows窗體應用程序)上的C++/Cli,我使用了無序地圖指針,但我無法爲其指定值,拋出一個錯誤,因爲我的代碼示例展示給在創建實例後將值指定給unordered_map指針

//... 
    public ref class Login: public System::Windows::Forms::Form 
{ 
public: 

    unordered_map< std::string, std::string >* Accounts; 

    Test(void) 
    { 
     this->Accounts = new unordered_map<std::string, std::string>(); 
     this->Accounts["hello"] = "test"; // The Error is in this line, this is the line 37 
     cout << this->Accounts["hello"]; 
     InitializeComponent(); 
     // 
     //TODO: Add the constructor code here 
     // 


    } 
    //... 

錯誤:我希望我的代碼是很清晰,所以你可以想像它

Error 4 error C2107: illegal index, indirection not allowed C:\Projects\Test\Login.h 37

在此先感謝。

+0

你真的需要'Accounts'是一個指針? – 2012-03-29 13:59:28

+0

我這樣做是因爲在C++/CLI中,它們不允許你設置它而不用指針。 – Grego 2012-03-29 14:31:57

回答

3

Accounts是一個指針,你需要取消對它的引用:

(*this->Accounts)["hello"] = "test"; 
cout << (*this->Accounts)["hello"]; 
+0

它拋出一個錯誤「錯誤C2059:語法錯誤:'(''在同一行中,也許錯誤是在我的問題中顯示的它的實例,你認爲多數民衆贊成嗎? – Grego 2012-03-29 13:47:39

+0

我測試了你的新答案,我得到了另一個錯誤:「錯誤C2107:非法索引,不允許間接」 – Grego 2012-03-29 13:51:56

+0

@格雷戈,對不起。更新。 – hmjd 2012-03-29 13:52:29