gpt4 book ai didi

c++ - 如何使用转换构造函数来初始化 vector

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:57 28 4
gpt4 key购买 nike

我有两个类(class),A可以从 string 构建从而定义了从 string 的转换至 A .

class A
{
public:

A(std::string s) : s_(s) {}

private:

std::string s_;
};


class B
{
public:

B() : v_{"foo", "bar"} {}

private:

std::vector<A> v_;
};

B有一个 vector成员包含 A对象。构造函数用字符串初始化 vector ( v_ )。这是行不通的。为什么?

最佳答案

本质上,您的 std::vector<A>期望使用包含 A 的初始化列表构造对象。编译器无法隐式转换 std::string 的初始化列表对象合并为一个包含 A 的对象s,没有其他std::vector构造函数需要两个 std::string s(即使有一个构造函数,它也可能没有您要查找的含义)。

如果你写

B() : v_{A("foo"), A("bar")} {}

相反,它有效。现在你有一个初始化列表 A s,它得到了正确的解释。

关于c++ - 如何使用转换构造函数来初始化 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082689/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com