我試圖恢復一些舊的軟件,但問題是該軟件是在2003年用MC和Windows編寫的,Iostream頭文件已從iostream.h
更改爲iostream
。定義更改
那麼這個軟件有一個三維矩陣庫其中有功能類似這樣
friend ostream& operator<< (ostream&, const CMatrix3D<T>&);
這個功能是沒有更多的compatable與iostream
,所以我把它改爲:
friend bool operator<< (std::ostream&, const CMatrix3D<T>&);
,但現在在一個這個功能之前被稱爲:
friend ostream& operator << (ostream& os, block* bl)
{
vec_3d p1 = bl->points[0]->value();
vec_3d p2 = bl->points[6]->value();
os << "Diagonal points: " << p1 << " " << p2;
return os;
}
和th恩我把它改爲:
friend bool operator << (std::ostream& os, block* bl)
{
vec_3d p1 = bl->points[0]->value();
vec_3d p2 = bl->points[6]->value();
os << "Diagonal points: " << p1 << " " << p2;
return os;
}
給我的這些錯誤:
error C2297: '<<' : illegal, right operand has type 'const char [2]'
error C2678: binary '<<' : no operator found which takes a left-hand
operand of type 'int' (or there is no acceptable conversion)
可有人建議我一條生路?
你用原始函數定義得到了什麼錯誤? – 2012-02-09 06:30:07
爲什麼你將'<<'運算符的返回類型更改爲'bool'?無論其他問題如何,單單這一改變都會破壞代碼。 – AnT 2012-02-10 00:22:07
如果你有更新你的問題,請編輯你的問題,不要發佈「答案」。如果您有其他問題,請提出另一個問題,請勿發佈「答案」。 – 2012-02-10 07:29:26