c++ - 将初始化列表传递给基于 vector 的构造函数

标签 c++ c++11 uniform-initialization

我目前有以下代码

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

int main()
{  
  test t;
}

错误:

main.cpp:29:9: error: could not convert '{{1, {{15, {"A", "B", "C", "D"}}}}}' from '<brace-enclosed initializer list>' to 'const std::multimap<int, std::multimap<int, test> >'
         };
         ^

我想知道为什么将 {"A", "B", "C", "D"} 传递给 std::vector<std::string> str)失败了吗?关于如何解决此问题的任何建议?

最佳答案

您需要另一副牙套。使用:

0x0f, {{"A", "B", "C", "D"}}

否则,编译器会尝试使用参数 "A"、"B"、"C"、"D" 构造一个 test,就像 test{"A", "B", "C", "D"},这是行不通的。

关于c++ - 将初始化列表传递给基于 vector 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55837133/

相关文章:

C++:如何访问内部类的方法?

c++ - 返回左值的函数,总是返回左值引用

c++ - 在 Qt 中正确使用 C++11 基于范围的 for 循环

c++ - C++11 中带有可变参数模板的 bindParameter 函数

c++ - std::make_map?统一初始化

C++ - 带有 std::string 的统一初始值设定项

c++ - C++ 字符串与 Java 字符串不同吗?

c++ - 在另一个概念的 'requires' 子句中使用一个概念

c++ - 贝尔曼福特邻接矩阵的单源最短路径未检测到负循环

c++ - 使用迭代器的初始化列表构造容器