ポケモンのアイデアに似たゲームタイプのプログラムを作っています。CPetのサブクラスであるさまざまな種類のペットを含むペット(独自のクラス)で構成されるいくつかのチーム(独自のクラス)を追跡するトーナメントクラスがあります。
メインからメインにファイル名を渡そうとしています。そのファイル名をトーナメントクラスに渡します。トーナメントクラスでは、次のファイルを開きます。
14 //Construct a tournament
15 CTournament::CTournament(const char *Filename){
16 //opening file
17 ifstream inFile(Filename, ios::in);
18 if(inFile.bad()){
19 cout << "File error" << endl;
20 return ;
21 }
22 //get Teamlist for tournament
23 while(!(inFile.eof())){
24 CTeam* temp = new CTeam;
25 temp->ParseTeam(inFile);
26
27 TeamList.push_back(temp);
28 }
29 }
ここで、inFileをCTeam.ParseTeamに渡します。これは次のようになります。
30 void CTeam::ParseTeam(std::istream in){
31 string readline;
32 getline(in, readline);
33 this->TeamName = readline;
34 while(!(in.eof())&&(readline != " " || readline != "/n"))
35 {
36 getline(in, readline);
37 this->Parse(readline);
38 }
39 }
エラーが発生しています:
In file included from /usr/include/c++/4.4/ios:39,
from /usr/include/c++/4.4/ostream:40,
from /usr/include/c++/4.4/iostream:40,
from CTournament.h:11,
from CTournament.cpp:8:
/usr/include/c++/4.4/bits/ios_base.h: In copy constructor 'std::basic_ios<char, std::char_traits<char> >::basic_ios(const std::basic_ios<char, std::char_traits<char> >&)':
/usr/include/c++/4.4/bits/ios_base.h:790: error: 'std::ios_base::ios_base(const std::ios_base&)' is private
/usr/include/c++/4.4/iosfwd:47: error: within this context
/usr/include/c++/4.4/iosfwd: In copy constructor 'std::basic_istream<char, std::char_traits<char> >::basic_istream(const std::basic_istream<char, std::char_traits<char> >&)':
/usr/include/c++/4.4/iosfwd:53: note: synthesized method 'std::basic_ios<char, std::char_traits<char> >::basic_ios(const std::basic_ios<char, std::char_traits<char> >&)' first required here
CTournament.cpp: In constructor 'CTournament::CTournament(const char*)':
CTournament.cpp:25: note: synthesized method 'std::basic_istream<char, std::char_traits<char> >::basic_istream(const std::basic_istream<char, std::char_traits<char> >&)' first required here
CTournament.cpp:25: error: initializing argument 1 of 'void CTeam::ParseTeam(std::istream)'
彼がfstreamを含まなかった場合、これについて同様の質問があることを私は知っています。両方のヘッダーファイルにインクルードしました。
正しいタイプをPraseTeamに渡さないことが問題だと思いましたが、ファイルをParseTeamに渡して、正しく行っているかどうかを確認する方法について、具体的なことは何も見つかりませんでした。
前もって感謝します。