Re: [問題] 關於operator
※ 引述《holymars ()》之銘言:
不好意思,再問一些問題
根據h大所提供的方法,我在所有class內(a和aaa)都放上重載運算子了
執行的結果,可以將資料存入檔案,但卻讀取不出來
在輸入的部份我不知道有沒有寫錯
istream& operator>>(istream& in,aaa& vaaa){
for (list<a>::iterator i=vaaa.v.begin();i!=vaaa.v.end();++i){
in >> *i;
}
return in;
}
測試的結果,v的size是0,仔細想一下,的確會是0
因為還沒讀到,但我不知道該怎麼改才對
以下是之前的資料結構
: : class a{
: : vector<int> p;
: : ...
: public:
: friend ostream& operator<<(ostream& out,a& v);
: friend istream& operator>>(istream& in,a& v);
: : }
: : class aaa{
: : list<a> v;
: public:
: : friend ostream& operator<<(ostream& out,aaa& v)
: : friend istream& operator>>(istream& in,aaa& v)
: : ...
然後我現在要實作一個成員函數(方法),用來讀取檔案內的資料
並根據這些資料,還原成原來的物件,所以就類似這樣
void aaa::OpenData(std::string *path){//path為檔案路徑
ifstream infile((*path).c_str(),ios::in );
if (!infile)
MessageBox::Show("開啟檔案失敗");
else{
infile >> *this;//這裡我想應該要有if (!infile.eof()){...}
之類的東西,但我不知道該怎麼寫才對@@
}
infile.close();
infile.clear();
}
以及還有另外一個問題,在class a內的vector型態若是自訂的話
(我現在的型態是座標,有屬性x和y)
那麼在operator上該怎麼寫呢?
目前我是將它轉成個別的int,存入檔案,不過在讀取的時候不知道該怎麼寫會比較好
就像這樣
ostream& operator<<(ostream& out,a& va){
out << va.ID << " "
<< va.p.size() << " ";
_Point position(0,0); //因為一些因素,所以座標的class是自訂的
int value=va.p.size();
for (int i=0;i<value;++i){
position=va.p[i];
out << position.x << " " << position.y <<" ";
//就像這樣,將他分開存入
}
out << endl;
return out;
}
istream& operator>>(istream& in,TPInGra& vTPInGra){
int size=0;
_Point pos(0,0);
in >> va.ID
>> size;
/* for (int i=0;i<size;++i){
in >> va.p[i];
}*/很明顯,這裡會錯,但我不知道要怎麼寫,所以我用下列的方式
va.p.resize(size);
for (int i=0;i<size;++i){
in >> pos.x >> pos.y;
va.p[i]=pos;
}
return in;
}
以上,不過因為函數不知道該怎麼寫,所以也不知道operator>>寫的對不對
再麻煩高手們回答,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.48.28
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章