创建一个构造函数,即Capabe获取任何数量的参数
Create a constructor, that is capabe take any number of arguments
,因此B类构造函数应以任何数量的A*
作为参数,而push_back
这些指示器将这些指针转换为_vec
vector。
我尝试使用variadic模板std::initalizer_list
。似乎没有任何合适。也许我在这里使问题复杂化。在过去2天的任何地方都找不到解决方案。
//very shematic code, just to get the idea
Class A
{
//members
};
Class B
{
private:
std::vector<A*> _vec;
public:
B(A* much_arguments)
{
_vec.push_back(much_arguments); //schematically
//do other stuff;
}
};
最简单的方法是使用 std::initializer_list
:
//very shematic code, just to get the idea
class A
{
//members
};
class B
{
private:
std::vector<A*> _vec;
public:
B(std::initializer_list<A*> many_arguments):
_vec {many_arguments}
{
//do other stuff;
}
};
在线查看!
编辑在注释中信息之后: std::initializer_list
不是神奇的魔杖。它不会让您进行B::B(A*, A*, A*)
。相反,您必须以以下方式之一使用它:
B myObject {new A(), new A(), new A()}; //uniform initialization
B myOtherObject({new A(), new A(), new A()}); // explicit initialization with single std::initializer_list
旁注:处理原始指针很少是一个好主意。优于原始指针A*
。
std::unique_ptr<A>
或std::shared_ptr<A>
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 数组长度,为什么从命令行获取时不能使用它?
- Boost Spirit,获取迭代器内部语义动作
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 具有默认值的引用获取函数
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 创建一个构造函数,即Capabe获取任何数量的参数