【问题标题】:Initializing a vector<std::string> in uniform initialization在统一初始化中初始化向量<std::string>
【发布时间】:2019-04-24 21:16:13
【问题描述】:

我正在使用以下代码

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";
}

上面的代码构建得很好,但是当我运行它时我得到了错误的访问。我附加了调用堆栈。有什么建议为什么我会收到这个错误?或者我该如何解决?似乎它是一个恒定的循环。

【问题讨论】:

  • 错误在哪里?该代码对我来说很好。
  • 现在不是编译它的错误访问。似乎是它的恒定循环或初始化期间的东西
  • 尝试运行代码
  • 试过了。正常终止。你用的是什么编译器?
  • 我正在使用clang。 Xcode

标签: c++11 uniform-initialization


【解决方案1】:

你有一个无限递归的情况,导致堆栈溢出。

创建test 的实例 -->
初始化_var -->
创建test 的实例 -->
初始化_var -->

等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多