#include<iostream>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include <complex>
#include<windows.h>
#define PI 3.14159265358979323846
#define A 0.0000000001
using namespace std;
complex<double> dir(0,1);
class Car
{
directionX=0;
directionY=1;
public:
Car(char *type)
{
fuel=30;
speed=0;
}
void TurnLeft()
{
const double angle = 5*PI/180;
dir = polar(abs(dir), arg(dir) + angle);
if(abs(dir.real())<A)
{
dir.real()=0;
}
if(abs(dir.imag())<A)
{
dir.imag()=0;
}
directionX=dir.real();
directionY=dir.imag();
}
void TurnRight()
{
const double angle = 5*PI/180;
dir = polar(abs(dir), arg(dir) - angle);
if(abs(dir.real())<A)
{
dir.real()=0;
}
if(abs(dir.imag())<A)
{
dir.imag()=0;
}
directionX=dir.real();
directionY=dir.imag();
}
};
这是我的项目的一个部分,我害怕在这里发布456个代码行。
我有一个C ++项目要提交,我在我的电脑上准备好了。我不得不使用复杂的模板,它工作得很好。但是,当我想在另一台电脑上运行我的代码时,real()
和imag()
类的complex
函数显示错误。我没有任何线索为什么它根本没有编译。
答案 0 :(得分:1)
查看complex
模板成员函数的文档。您无法在行更改实部的值:
dir.real()=0;
而不是它应该传递新值作为参数:
dir.real(0);
dir.imag()=0;
顺便说一句,您的代码段无法编译,因为directionX
,directionY
和其他几个变量未被声明。