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";
}

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top