Saltar al contenido

No se permite el puntero a un tipo de clase incompleto

Haz todo lo posible por comprender el código de forma correcta antes de aplicarlo a tu trabajo si ttienes algo que aportar puedes comentarlo.

Solución:

Una “clase incompleta” es una declarada pero no definida. P.ej

class Wielrenner;

Opuesto a

class Wielrenner

    /* class members */
;

Necesitas #include "wielrenner.h" en dokter.ccp

Una cosa para comprobar…

Si su clase está definida como typedef:

typedef struct myclass  ;

Entonces tratas de referirte a él como struct myclass en cualquier otro lugar, obtendrá errores de tipo incompleto de izquierda a derecha. A veces es un error olvidar que la clase/estructura fue definida. Si ese es el caso, elimine “struct” de:

typedef struct mystruct ...

struct mystruct *myvar = value;

En su lugar utiliza…

mystruct *myvar = value;

Error común.

Obtiene este error cuando declara una referencia directa dentro del espacio de nombres incorrecto, declarando así un nuevo tipo sin definirlo. Por ejemplo:

namespace X

  namespace Y
  
    class A;

    void func(A* a)  ...  // incomplete type here!
  

…pero, en la clase A se definió así:

namespace X

  class A  ... ;

Así, A se define como X::Apero lo estaba usando como X::Y::A.

La solución, obviamente, es mover la referencia hacia adelante a su lugar adecuado de la siguiente manera:

namespace X

  class A;
  namespace Y
  
    void func(X::A* a)  ...  // Now accurately referencing the class`enter code here`
  

Ten en cuenta dar recomendación a este tutorial si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *