Просто: как инициализировать новый unordered_map* (указатель) в C ++? - PullRequest
1 голос
/ 29 марта 2012
unordered_map<std::string, std::string>* Accounts;

У меня есть этот код для инициализации с помощью указателя, я мог бы просто оставить указатель (*) вне него и напрямую назначить ему значение, но проблема в том, что я использую C ++ / Cli Visual Studio 2008 и я не могу определить переменную там в области видимости класса

потому что выдает эту ошибку:

ошибка C4368: невозможно определить «Аккаунты» как члена управляемого 'Test :: Login': смешанные типы не являются поддерживается C: \ Проекты \ Test \ Login.h 32

Итак, мне сказали, что я должен сделать указатель и затем инициализировать его в конструкторе, но как мне создать его из указателя? (Я думал что-то вроде Accounts = new 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";
                    cout << this->Accounts["hello"];
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //

        }

выдает эту ошибку:

Ошибка 4: ошибка C2107: недопустимый индекс, косвенное обращение разрешено C: \ Projects \ Test Login.h 37

Заранее спасибо!

1 Ответ

2 голосов
/ 29 марта 2012
unordered_map<std::string, std::string>* Accounts = new unordered_map<std::string, std::string>();

Просто помните, что вам нужно удалить его, когда вы закончите.

delete Accounts;
...