2012-03-10 1 views
-1

私はヘッダファイルで、次のように宣言されたクラスがあります。"complex-functions.cpp:57:25:エラー:" add "の前に期待される初期化子"という意味はどういう意味ですか?

class COMPLEX{ 
    private: 
    typedef struct{ 
    double real; 
    double imaginary;  
       }complex; 

私はファンクションドライバからこれを呼び出すときに今、私はエラーを取得する「の前にコードのこのセクションでは、右ここに追加して、あなたのようにinitalizer期待を私はちょうどうまくコンパイルし、他の部分のようにそれを持って見ることができます。

//returns the phase of the complex number 
double COMPLEX :: getPhase(complex n, int form) 
{ 
if(form == 0) 
{ 
    float x = n.real; 
    float y = n.imaginary; 
    return(atan2(y,x)); 
} 
if(form == 1) 
{ 
    return(n.imaginary); 
} 
} 

//adds two complex numbers together 
void COMPLEX :: complex add(complex n, complex m, int form) 
{ 
    complex temp, temp2, temp3; 
if(form == 0) 
{ 
    temp.real = n.real + m.real; 
    temp.imaginary = n.imaginary + m.imaginary; 
    return(temp); 
} 
if(form == 1) 
{ 
    temp3.real = (n.real*cos(n.imaginary) + m.real*cos(m.imaginary)); 
    temp3.imaginary = (n.real*sin(n.imaginary) + m.real*sin(m.imaginary)); 
    temp2.real = getMagnitude(temp3, 0); 
    temp2.imaginary = getPhase(temp3, 0); 
    return(temp2); 
} 
} 

は右の前に追加するだけの誤差があり、私は複雑な関数の呼び出し側の前のものを入れて試してみたが、それはまだそれが前に何かを期待していたと述べました誰か助けてもらえますか?

答えて

1

この機能

void COMPLEX :: complex add(complex n, complex m, int form) 

それはvoidCOMPLEX::complexの両方を返しているように見えます。

あなたが返すものを決める必要があります。

+0

私は複合関数を返す必要がありますが、私が取り除くと、私はこれを得ます - > 'complex.h:25:5:エラー: 'typedef struct COMPLEX :: complex COMPLEX :: complex'はプライベートです complex-functions.cpp:57:24:error:このコンテキスト内 complex-functions.cpp:57:24:エラー: 'この複合体がこのスコープ内で宣言されていませんでした' complex-functions.cpp:57:35:error : 'complex'はこのスコープ内で宣言されていません complex-functions.cpp:57:46:エラー: 'int'の前に一次式が予期されています –

+0

'add 'がCOMPLEXのメンバー関数であるかどうか、それは自由な関数です。非会員が利用できるようにするには、typedefを公開する必要があります。二重 \tのtypedef構造体{ \t \t: –

+0

追加は、複雑な追加機能は、パブリック –

関連する問題