为什么复杂模板不起作用?

时间:2016-10-02 20:24:03

标签: c++

#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函数显示错误。我没有任何线索为什么它根本没有编译。

1 个答案:

答案 0 :(得分:1)

查看complex模板成员函数的文档。您无法在行更改实部的值:

dir.real()=0;

而不是它应该传递新值作为参数:

dir.real(0);

dir.imag()=0;

处的同样问题

顺便说一句,您的代码段无法编译,因为directionXdirectionY和其他几个变量未被声明。