Не могу получить std :: map для вставки из функции - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь добавить элементы в карту, которая является частной переменной в классе, на основании того, что определенные параметры выполнены. Когда я пытаюсь использовать функцию insert для std::map или оператора [], ничего не происходит. Я даже не получаю ошибку. Во время отладки код выполняется, как будто все в порядке, но карта остается пустой.

Я пробовал несколько способов вставить карту, включая оператор [] и различные аргументы вставки.

    class foo {
    private:
       std::map<std::string, int> map;

    public:
       void bar();
    };

В файле cpp:

    void foo::bar() {
       if(condition)
            map.insert(std::make_pair("string", 1));
    }

Нет сообщений об ошибках или предупреждений в компиляторе или во время отладки.

1 Ответ

0 голосов
/ 15 октября 2019

Если базовое использование карты STD работает, возможно, проблема заключается в вашей condition реализации

    #include <iostream>
    #include <map>

    class Foo {
      std::map<std::string, int> map;

     public:
      void bar();
      void print();
    };

    void Foo::bar() {
      // if (condition) // weird condition causing failure
      map.insert(std::make_pair("string", 1));
    }

    void Foo::print() {
      std::cout << map.size() << std::endl;
      std::cout << map.at("string") << std::endl;
    }

    int main(void) {
      Foo foo;

      foo.bar();
      foo.print();
    }
...