さて、これが私がここに持っているC++コードであり、コンパイルできません
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int n = 900;
class City{
string name;
double area;
int count, roads;
public:
City() {}
City(string a, double b, int c, int d ) { a=name; b=area; c=count; d=roads;}
string getname() {return name;}
double getarea() {return area;}
int getcount() {return count;}
int getroads() {return roads;}
friend ostream& operator << (ostream& , City& );
friend istream& operator >> (istream& , City& );
};
ostream& operator << (ostream& out, City& a) {
out<<"name "<<a.name<<", area "<<a.area<<", count "<<a.count<< ", roads "<<a.roads<<endl;
return out;
}
istream& operator >> (istream& in, City& a) {
in>>a.name>>a.area>>a.count>>a.roads;
return in;
}
void fill(int arr[], int size){
ifstream ifs("cities.txt.");
for (int i=0;i<size;i++)
ifs>>arr[i];
}
void func(City* arr){
ofstream ofs("density.out");
for(int i=0;i<n;i++){
if(arr[i].getcount()/arr[i].getarea()>1000)
ofs<<arr[i];
}
}
int main(){
City* hm;
hm = new City[n];
fill(hm, n);
func(hm);
system ("pause");
return 0;
}
コンパイル中に発生するエラーは次のとおりです。
エラー C2664: 'fill': パラメーター 1 を 'City *' から 'int []' に変換できません
どういうわけか、クラス 'City *" と int[] 配列に何か問題があると表示されていますが、わかりません。「int」を double で変更しますが、同じ確率で変更します。それが問題です。それ以外の場合は単純なようですファイルからの配列充填関数.何が問題なのですか?
では、どのように
void fill(City& arr, int size) のボディはいかがですか?