2016-10-02 59 views
0
#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

請問你能告訴我們你的代碼嗎? – amanuel2

+3

我們也沒有線索。如果您創建[mcve],這將有所幫助。也許你正在使用不同的實現? – Rakete1111

回答

1

檢查complex模板成員函數的文檔。您不能行改變實部的值:

dir.real()=0; 

代替它,你應該通過新的值作爲參數:在dir.imag()=0;

dir.real(0); 

同樣的問題順便說一句,你的代碼段無法編譯,因爲directionXdirectionY和其他幾個變量沒有聲明。