¿Es posible declarar una clase sin su aplicación? (C ++)
-
22-08-2019 - |
Pregunta
Sé que las preguntas parece ambigua, pero no podía pensar en ninguna otra manera de decirlo, pero, ¿Es posible hacer algo como esto:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
Solución
Sí, eso es posible. El siguiente simplemente declara wsx
class wsx;
Ese tipo de declaración se llama una declaración hacia adelante, porque es necesario cuando dos clases se refieren el uno al otro:
class A;
class B { A * a; };
class A { B * b; };
Uno de ellos tiene que ser declarada hacia adelante a continuación.
Otros consejos
Esta es la definición de la clase
class wsx
{
public:
wsx();
}
Esta es la definición del constructor
wsx::wsx()
{
std::cout<<"WSX";
}
Esta es una declaración más adelante dice que la clase se definirá en algún lugar
class wsx;
En el ejemplo,
class wsx; // this is a class declaration
class wsx // this is a class definition
{
public:
wsx();
}
Así que sí, mediante el uso de class wsx;
es posible declarar una clase sin definirlo. Una declaración de la clase le permite declarar punteros y las referencias a esa clase, pero no instancias de la clase. El compilador necesita la definición de clase por lo que sabe la cantidad de memoria para asignar a una instancia de la clase.
Sí. Pero es no posible definir una clase sin declarar.
Debido a que:. Cada definición es también una declaración
Se definió la clase. No tiene miembros de datos, pero eso no es necesario.
No estoy seguro de lo que quiere decir. El código que ha pegado parece correcto.