2015-02-07 75 views
-1

我不知道如何做到這一點,我一直在爲它工作幾個小時。我的教科書中只有一個朋友班的例子。座標類的極座標到矩形轉換的朋友函數

這是問題「構建體命名座標類含有兩個雙精度變量 命名XVAL和yval,用於一個點的x和y值存儲在矩形座標。 的類的方法應包括構造和顯示方法和一個名爲convPol()的朋友函數 。convPol()函數應該接受兩個雙精度數字r 和theta,它們代表極座標中的一個點並將它們轉換爲直角座標 對於從極座標轉換爲直角座標,使用這些公式: x = r cos(theta) y = r sin(theta)「

這就是我想到的,但我知道我做錯了我沒有一個好的參考點,因爲整本教科書只有一個糟糕的例子,幾乎完全不同。更具體我不知道在哪裏使用座標&(如何引用數字),我知道我不應該使用指針。請有人指出我正確的方向嗎?

這是我的代碼:

#include <iostream> 
#include <cmath> 
using namespace std; 
//ƒclassƒdeclarationƒsection 
void ConvPol(double r,double theta, double& xval, double& yval) 
{ 
double x,y; 
xval=r*cos(theta); 
yval=r*sin(theta); 
return; 
} 

class Coord 
{ 
    //ƒfriendsƒlist 
    friend double ConvPol(Coord&); 
    private: 
    double xval; 
    double yval; 
    public: 

    Coord (double = 0, double = 0); //ƒconstructor 
    void display(); 
}; 
//ƒclassƒimplementationƒsection 
Coord::Coord(double x, double y) 
{ 
    xval = x; 
    yval = y; 

} 
void Coord::display() 
{ 
cout <<xval<<","<<yval; 
    return; 
} 
//ƒfriendƒimplementations 
void time(double, double, double&, double&); 

int main() 
{ double xval,yval; 
    ConvPol(1,5,xval,yval); 
    Coord a(xval,yval); 
    a.display(); 
    return 0; 
} 
+1

除非您有具體問題/問題/錯誤,否則此處不重要,應移至http://codereview.stackexchange.com – smci 2015-02-07 02:50:34

+0

此外,[tag:r]標記用於R編程語言。不是當你有一個名爲R的變量時;-) – smci 2015-02-07 02:51:19

+2

'ConvPol'的聲明,作爲Coord類中的朋友,與要求不符。試試'friend void ConvPol(Coord&point,double rho,double theta);' – 2015-02-07 02:52:20

回答

0

看起來你感到困惑。這是我的理解:

class Coord 
{ 
    friend void ConvPol(Coord& point, 
         double rho, // length 
         double angle); 
}; 

void ConvPol(Coord& point, double rho, double angle) 
{ 
    point.x = rho * cos(angle); // Assign to the point member x 
    point.y = rho * sin(angle); // Assign to the point member y. 
} 

根據要求,ConvPol功能從極座標(RHO,角),以笛卡爾座標(X,Y)轉換。所以,該功能需要rhoangle

由於函數是獨立的(不是在方法中),它需要一個Coord實例來接收轉換後的值。它是通過引用傳遞的,因爲參數將被修改(根據函數的內容)。

函數不返回任何東西,所以它的返回類型爲void

因爲函數是friendCoord,函數可以直接訪問數據成員,就好像沒有任何訪問權限一樣(如struct)。

+0

謝謝Thomas,這非常有幫助。我會解決這個問題並在稍後回覆。這一節在我的書中只有2頁,只有一個奇怪的例子,再次感謝。 – Thejohn831 2015-02-07 03:16:26

+0

這個問題其實並不難解釋。謝謝托馬斯,你真的把事情弄清楚了! – Thejohn831 2015-02-07 03:54:57

+0

如果這個答案有幫助,請點擊複選標記。 – 2015-02-07 16:52:27