我有一個由n粒子組成的系統。一個粒子對象可以通過使用一個構造函數來初始化,該構造函數接受幾個參數(比如double)作爲參數。使用構造函數初始化一個對象數組,該構造函數接受用於創建對象的參數
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]'來代替。 – Sjlver
具體來說,大小爲n的註釋// Particle數組並不意味着兩個P [n]意味着同一件事情 – doctorlove
這是錯誤的確切代碼:錯誤表示'p'中的'operator ='不匹配= tempp',你的代碼表示p [i] = temp; – doctorlove