Инициализация векторав равномерной инициализации - PullRequest
1 голос
/ 25 апреля 2019

Я использую следующий код

class test
{
public:
    test(std::vector<std::string> str)
    {
        auto a = str[0];
        a = "B";
    }
    test()
    {
    }
    const std::multimap<int,  std::multimap<int, test>> _var= {
        {0x01,  {
                    {
                        0x0f, std::vector<std::string>{"A", "B", "C", "D"}
                    }
        }
        }
    };
};

int main()
{
    test t;
    std::cout << "Done";
}

Приведенный выше код работает нормально, однако при запуске я получаю неверный доступ.Я прикрепил стек вызовов.Любые предложения, почему я получаю эту ошибку?или как я могу это исправить?Похоже, это постоянный цикл.

enter image description here

1 Ответ

3 голосов
/ 25 апреля 2019

У вас есть случай бесконечной рекурсии, приводящий к переполнению стека.

Создание экземпляра test ->
Инициализация _var ->
Создание экземпляра test ->
Инициализировать _var ->

и т. Д.

...