2009-11-18 14 views
46

¿Por qué obtengo el error "multiple types in one declaration" cuando compilo mi programa C++?C++ "varios tipos en una declaración" error

+6

Por favor, muestre el código en la pregunta –

+17

Porque tiene varios tipos en una declaración. Si quieres buena ayuda, necesitamos un código. –

+1

Muestra no solo el código, sino también el compilador. –

Respuesta

13

Debe haber declarado el doble de la misma variable en algunas clases o dos clases con el mismo nombre. Ver this en Stack Overflow, por ejemplo.

usted podría ser también una falta ; o podría tener una definición de clase con la sintaxis rota ...

Si nos puede mostrar algo de código, que sería mejor!

+0

Buena conjetura. fallar un ; después de a} de una definición de clase. – lichenbo

8

Supongo que te falta un corchete de cierre en algún lugar de una definición de clase, o un punto y coma después.

122

es probable que tenga código que es el equivalente de

int float x; 

probablemente

class Foo { } float x; 

o en su forma más común (tenga en cuenta el punto y coma que falta después de cerrar corchete)

class Foo { 
    // 
} 

float x; 
+2

Wow, gracias. Esto me sigue sucediendo, jaja :) – abelito

+1

Para mí, olvidé agregar un punto y coma después de declarar una estructura. – saccharine

27

Yo tuve el mismo problema. A veces, la línea de error no muestra el lugar correcto. Revise todas las clases creadas/modificadas nuevas y vea si olvida ";" al final de la defifnición de la clase.

+0

esta debería ser la respuesta sugerida porque tuve el mismo problema solo para ver que faltaba una lista de los nuevos encabezados que había incluido ";" – OverTheEdge

+0

otros también han mencionado ';' tema especialmente @Msalters con el ejemplo también. ¿Por qué nadie está marcado como respuesta? –

10

No olvide comprobar ; después de declaraciones enum, también.

4

Aquí es un otro escenario que puede aparecer el mismo error

struct Field 
{ // <------ Forget this curly brace 
    enum FieldEnum 
    { 
     FIRSTNAME, 
     MIDDLENAME, 
     LASTNAME, 
     UNKNOWN 
    }; 
}; 
6

Además, es posible que haya olvidado un punto y coma en una declaración adelantada:

class Foo // <-- forgot semicolon 

class Bar { 
    ... 
}; 
2

De acuerdo con lo anterior. Además, si ves esto, preprocesa la aplicación y mira el .i Busca el nombre "ofensivo". Luego mira hacia arriba. A menudo verá el "}" sin/";" en una clase en el primer espacio sin arriba. Encontrar el problema suele ser más difícil que saber de qué se trata.

+0

En mi pantalla en este momento, "arriba" su respuesta es la pregunta. ¡Sugiero que [edit] sea más claro sobre cuál de las otras 7 respuestas es una adición! – Mogsdad

Cuestiones relacionadas