使用构造函数初始化对象数组,该构造函数接受用于创建对象的参数
Initializing an Array of Objects using a Constructor that takes in Arguments for creating the Object
我有一个由n粒子组成的系统。可以使用构造函数初始化 Particle 对象,该构造函数将多个参数(例如双精度值)作为参数。
Particle p(para1, para2 ... , paraN);
我现在有一个需要n粒子数组的系统。我想构建一个构造函数,该构造函数将对象数量与粒子参数一起纳入并创建一个 n 粒子数组。
我尝试了以下方法:
class System {
public:
Particle p[]; //declare dynamic array
System() {}
//Constructor
System(int n, para1, para2 ... , paraN)
{
Particle p[n]; //Particle array of size n
for(int i=0; i<n; i++)
{
Particle temp(para1, para2 ... , paraN);
p[i] = temp;
}
}
};
程序无法编译并给出以下错误:
error: no match for ‘operator=’ in ‘p[i] = tempp’
note: candidate is:
note: Particle& Particle::operator=(const Particle&)
note: no known conversion for argument 1 from ‘Particle(double, double, double, double)’ to ‘const Particle&’
总的来说,我是C++和 OOP 的新手。任何关于如何克服这个问题的帮助将不胜感激。
当你使用 p[i] = temp
时,编译器会在 Particle 类中查找带有签名的赋值运算符的重载:
Particle& Particle::operator=(const Particle&)
这样做的目的是让您根据对象的类定义对象的赋值方式。在这里,您可以执行属性赋值或分配您定义的粒子的语义。当您在对象中动态分配数据时,这尤其有用,在这些对象中复制指针可能不是正确的行为。
看看这个页面: http://www.cplusplus.com/articles/y8hv0pDG/它不仅解释了为什么以及何时需要赋值运算符,还解释了复制构造函数。
相关文章:
- 没有用于初始化C++中的变量模板的匹配构造函数
- 用于创建命名构造函数的宏
- 没有用于调用默认构造函数的匹配函数
- std::vector 是否有用于引用的复制构造函数?
- 没有用于初始化模拟工厂的匹配构造函数
- 模板 ctor 类型推导不起作用(没有匹配的构造函数用于初始化 ...)与函数<>参数
- 没有适用于 std::unique_ptr 的适当默认构造函数
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- 用于赋值的参数化构造函数
- C++构造函数,一个用于度,一个用于弧度
- 用于 protobuf 转换的大括号初始化样式构造函数
- 使用构造函数作为成员函数的 C++(用于序列化)
- 构造函数不能用于启发性化
- 错误:没有用于初始化和mexfunction的匹配构造函数
- 没有用于初始化可变参数模板类的匹配构造函数
- ifstream 没有用于初始化的匹配构造函数
- 将 SFINAE 用于模板化构造函数时出现问题
- 在已发布的结构中添加构造函数(用于 memcpy)是否安全?
- 没有匹配的构造函数用于初始化模板化类的构造函数
- “没有匹配的构造函数用于初始化”与矢量