-1
ファイルを読み込んで構造体に配置するコードを記述しようとしています。しかし、私は私のコードを実行すると、それは私に異常なエラーを与え、私は何か間違ったコードを見ることができません。'ifstream'の初期化に一致するコンストラクタがありません
のstruct地図 {
int x;
int y;
char symbol;
int id;
string fullname;
bool visited;
};
void locationFile(ifstream filename, vector<Map> &vmap, int rows, int
col)
{
Map map;
while (filename >> map.x >> map.y >> map.symbol >> map.id)
{
if (map.x> rows || map.x< 1 || map.y> col || map.y<1)
{
cout << map.id << " out of range - ignoring" << endl;
map.visited = true;
}
else
{
vmap.push_back(map);
}
}
}
void namesFile(ifstream names, vector<Map>& vmap)
{
Map map;
while(names >> map.id>> map.symbol)
{
vmap.push_back(map);
}
}
int main()
{
vector<Map> info;
string location;
string names;
getFilenames(location, names);
//open files
ifstream inL;
inL.open(location.c_str());
string journey= "journey.txt";
ofstream fout(journey.c_str());
int rows, col, sx, sy, ex, ey;
inL >> rows >> col >> sx >> sy >> ex >> ey;
locationFile(inL, info, rows, col);
inL.close();
ifstream inN;
inN.open(names.c_str());
namesFile(inN, info);
inN.close();
vector< vector<string> > grid;
grid= createGrid(info, rows, col, sx, sy, ex, ey);
//print out grid
for(int h=0; h< grid.size(); h++)
{
for(int g=0; g<grid.size(); g++)
{
fout << grid[h][g];
}
}
結果ショーは、情報から作成されたグリッドは、ファイル/
から読み込むこと) ^ /ライブラリ/開発/ CommandLineToolsは/ usr// C++インクルード/ v1/ios:313:5:注:ここでは はプライベートであると宣言されました ios_base(const ios_base&); // =削除; ^ /ライブラリ/開発/ CommandLineToolsは/ usr /含める/ C++/V1/iosfwd:32:131注意:用 暗黙のコピーコンストラクタ "のstd ::の__ 1 :: basic_ios初 ここ クラス_LIBCPP_TEMPLATE_VISのbasic_ifstreamが必要。 - >
'ifstream'はコピーできません。値渡しできません。代わりに参照渡し。 –
'ifstream'を値で関数に渡そうとしています。その関数がコピーされます。このような操作(ストリームオブジェクトのコピー)は許可されません。代わりに参照渡し。 –
https://stackoverflow.com/questions/36051672/why-are-iostreams-not-copyable –