Obteniendo "complex-functions.cpp: 57: 25: error: inicializador esperado antes de 'agregar'" ¿Qué significa?

Tengo una clase declarada como esta en un archivo de encabezado:

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

Ahora, cuando llamo a esto desde el controlador de función, aparece el error "inicializador esperado antes de agregar aquí en esta sección de código, y como puede ver, lo tengo como otras partes que se compilan bien.

    //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);
 }
}

Solo existe el error justo antes de agregar, he intentado poner cosas antes de la función compleja que llama, pero todavía decía que esperaba algo antes de agregar ... ¿alguien puede ayudar?

preguntado el 10 de marzo de 12 a las 05:03

1 Respuestas

Esta función

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

parece que está regresando tanto void y COMPLEX::complex.

Tienes que decidir qué quieres que te devuelva.

respondido 10 mar '12, 05:03

Lo necesito para devolver la función compleja, pero cuando saco el vacío, obtengo esto -> complex.h:25:5: error: ‘typedef struct COMPLEX::complex COMPLEX::complex’ is private complex-functions.cpp:57:24: error: within this context complex-functions.cpp:57:24: error: ‘complex’ was not declared in this scope complex-functions.cpp:57:35: error: ‘complex’ was not declared in this scope complex-functions.cpp:57:46: error: expected primary-expression before ‘int’ - Melocotón_Tropical

No puedo decir si add es una función miembro de COMPLEX o si es una función libre. Para que los no miembros puedan utilizarlo, el typedef deberá ser público. - bo persona

add es un miembro del complejo de estructura typedef que es parte de Class COMPLEX que es privado, mientras que la función add compleja se define como pública - Melocotón_Tropical

class COMPLEX { private: typedef struct{ double real; double imaginary; }complex; public: double getReal(complex n, int form ); double getImaginary(complex n, int form); double getMagnitude(complex n, int form); double getPhase(complex n, int form); complex add(complex n, complex m, int form); complex subtract(complex n, complex m, int form); complex multiply(complex n, complex m, int form); complex divide(complex n, complex m, int form); y así - Melocotón_Tropical

Si se define fuera de las clases, probablemente debería verse como COMPLEX::complex COMPLEX::add(COMPLEX::complex n, COMPLEX::complex m, int form). Es posible que desee simplificar el anidamiento de los tipos ... - bo persona

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.