Aquí está el código:¿Alguien puede ayudarme a entender este error? "Definición de declarada implícitamente‘classA :: classA()’"
#include <cstdlib>
#include <iostream>
using namespace std;
class classA
{
protected:
void setX(int a);
private:
int p;
};
classA:: classA()
{ //error here.
p = 0;
}
void classA:: setX(int a)
{
p = a;
}
int main()
{
system("PAUSE");
return EXIT_SUCCESS;
}
En realidad, lo que sé es que el compilador proporciona el constructor predeterminado de manera predeterminada. Aquí mencionó que faltaba la definición del constructor. Pero, no sabía el 'POR QUÉ' tenemos que proporcionar el constructor predeterminado cuando ya está siendo proporcionado por el compilador. Pero, ahora, sabía que si estamos definiendo el constructor predeterminado que no está de acuerdo con el proporcionado por el compilador, tendremos que definirlo explícitamente. No encontré el 'POR QUÉ'. :) – Chaitanya
@Chaitanya: El compilador genera un constructor predeterminado para usted si usted no declara (y define) uno usted mismo. En la pregunta, el OP ha intentado definir el constructor predeterminado fuera de la clase, sin declararlo en la clase. El código está mal formado y el compilador generará un error. Avíseme si lo entiende ahora ** (vea el código en la pregunta para entenderlo completamente) **. – Nawaz
Tengo el punto ahora. Entonces, es como una vez que definimos un constructor predeterminado, eso tiene que ser declarado. De lo contrario, uno estará allí por defecto. Muchas gracias :) – Chaitanya