Pergunta

Eu sei as perguntas parece ambígua, mas eu não conseguia pensar em outra maneira de colocá-lo, mas, é possível fazer algo como isto:

#include<iostream>

class wsx;

class wsx
{
public:
wsx();
}

wsx::wsx()
{
std::cout<<"WSX";
}

?

Foi útil?

Solução

Sim, isso é possível. A seguir apenas declara wsx

class wsx;

Esse tipo de declaração é chamado uma declaração para a frente, porque é necessário quando duas classes referem-se uns aos outros:

class A;
class B { A * a; };

class A { B * b; };

Um deles tem de ser para a frente declarou então.

Outras dicas

Esta é a definição da classe

class wsx
{
public:
wsx();
}

Esta é a definição do construtor

wsx::wsx()
{
std::cout<<"WSX";
}

Esta é uma declaração para a frente que diz a classe será definido em algum lugar

class wsx;

No seu exemplo,

class wsx; // this is a class declaration

class wsx  // this is a class definition
{
public:
wsx();
}

Então, sim, usando class wsx; é possível declarar uma classe sem defini-la. A declaração de classe permite declarar ponteiros e referências a essa classe, mas não as instâncias da classe. O compilador precisa a definição de classe para que ele saiba o quanto de memória para alocar para uma instância da classe.

Sim. Mas é não possível definir uma classe sem declará-lo.

Por causa:. Cada definição é também uma declaração

Você fez definir a classe. Ele não tem membros de dados, mas isso não é necessário.

Eu não tenho certeza que você quer dizer. O código que você colou parece correto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top