【发布时间】:2013-10-30 05:08:21
【问题描述】:
我有一个由 n 粒子组成的系统。一个粒子对象可以通过使用一个构造函数来初始化,该构造函数接受几个参数(比如双精度数)作为参数。
Particle p(para1, para2 ... , paraN);
我现在有一个需要 n 粒子数组的系统。我想构建一个构造函数,它接收对象数量以及粒子参数并创建一个 n-Particle 数组。
我尝试了以下方法:
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 隐藏了同名的属性 p。请改用
p = new Particle[n]之类的东西。 -
具体注释一下//大小为n的粒子数组并不代表两者P[n]的意思是一样的
-
这是有错误的确切代码吗:错误说不匹配 'p[i] = tempp' 中的 'operator=' 并且您的代码说 p[i] = temp;
-
您代码中的语法完全无效,编译(和运行时)错误将比您显示的更多。
标签: c++ arrays class oop constructor