为什么第42行和第45行总是报错?
c4droid吧
全部回复
仅看楼主
level 11
/**
问题描述: 初始位置(0,0), 每次生成随机位移, 长度指定, 方向随机,
输出每次移动后位置, 直到超过指定的目标距离, 要求输出在文件中
*/
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<cmath>
#define PI 3.1415926
using namespace std;
class Vector {
private :
double x, y;
public:
Vector(double a=0, double b=0, char mode='r'): x(a),y(b) {
if(mode=='p') {
x=a*cos(b/180*PI);
y=a*sin(b/180*PI);
}
}
double getDistance() {
return sqrt(x*x+y*y);
}
Vector operator+(const Vector& b);
friend ofstream& operator<<(ofstream& fout, const Vector& vector);
};
Vector Vector::operator+(const Vector& b) {
return Vector(x+b.x, y+b.y);
}
ofstream& operator<<(ofstream& fout, const Vector& vector) {
fout<<"(x,y)=("<<vector.x<<','<<vector.y<<")\n";
return fout;
}
int main() {
int target=50, step=2;
ofstream fout;
fout.open("E:\\123.txt");
Vector v;
srand(time(NULL));
int i=1;
fout<<"0: "<<v;
while(v.getDistance()<target) {
v=v+Vector(step, rand()%360, 'p');
fout<<i++<<": "<<v;
}
fout<<"平均步长: "<<(v.getDistance()/(i-1))<<endl;
}
2017年07月27日 09点07分 1
level 11
艾特大佬@不知者来此
2017年07月27日 09点07分 2
level 14
可能fout<<v; 需要单独放一行
因为fout<<i++ 返回的类型不是ofstream。
2017年07月27日 10点07分 3
谢谢,我明白了,fout<<i++,返回类型的确不是ofstream,我改成ostream能编译通过了[真棒]
2017年07月27日 13点07分
level 14
//这是修改建议
friend basic_ostream<char> &operator<<(basic_ostream<char> &fout, const dVector &vector);
2017年07月27日 10点07分 4
level 12
[狂汗]
重载了输出运算符的形参类型只接受 ofstream& 和 Vector的类型,你fout << "0: " << v; 传参类型不对!
2017年07月27日 12点07分 5
1