unqualified type expected error conversion before c++ constructor destructor

c++ - unqualified - error expected constructor destructor or type conversion before ''('' token



c++ error de compilaciĆ³n relacionado con la definiciĆ³n del constructor/destructor (2)

Estoy tratando de definir el constructor y el destructor de mi clase pero sigo recibiendo el error:

definición de ''x :: x ()'' declarada implícitamente

Qué significa eso?

Parte del código:

///Constructor StackInt::StackInt(){ t = (-1); stackArray = new int[20]; }; ///Destructor StackInt::~StackInt(){ delete[] stackArray; }


En la declaración de clase (probablemente en un archivo de encabezado) necesita tener algo que se vea así:

class StackInt { public: StackInt(); ~StackInt(); }

Para que el compilador sepa que no quieres las versiones generadas por el compilador por defecto (ya que las estás proporcionando).

Probablemente habrá más en la declaración que eso, pero necesitarás al menos esos, y esto te ayudará a comenzar.

Puedes ver esto usando el muy simple:

class X { public: X(); // <- remove this. }; X::X() {}; int main (void) { X x ; return 0; }

Compila eso y funciona. Luego quite la línea con el marcador de comentario y compile nuevamente. Verás aparecer tus problemas entonces:

class X {}; X::X() {}; int main (void) { X x ; return 0; }

qq.cpp:2: error: definition of implicitly-declared `X::X()''


Otra cosa a tener en cuenta es que todo lo que el constructor accede debe ser público. He recibido este error antes

class X{ T *data; public: // <-move this to include T * X(); ~X(); }

Este código todavía tiene el error porque en mi constructor tuve lo siguiente:

X::X(){data = new T();

Lo que significaba que, aunque había hecho públicos al constructor y al destructor, los datos con los que estaban trabajando aún eran privados, y aún obtenía el error de "definición de declaración implícita".