Domanda

So che le domande sembra ambiguo, ma non riuscivo a pensare a nessun altro modo di metterla, ma, è possibile fare qualcosa di simile a questo:

#include<iostream>

class wsx;

class wsx
{
public:
wsx();
}

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

È stato utile?

Soluzione

Si, è possibile. Di seguito solo dichiara wsx

class wsx;

Questo tipo di dichiarazione viene chiamata una dichiarazione anticipata, perché è necessaria quando due classi si riferiscono l'uno all'altro:

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

class A { B * b; };

Uno di loro ha bisogno di essere avanti dichiarata poi.

Altri suggerimenti

Questa è la definizione della classe

class wsx
{
public:
wsx();
}

Questa è la definizione del costruttore

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

Questa è una dichiarazione anticipata che dice la classe sarà definito da qualche parte

class wsx;

Nel tuo esempio,

class wsx; // this is a class declaration

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

Quindi sì, utilizzando class wsx; è possibile dichiarare una classe senza definirlo. Una dichiarazione di classe consente di dichiarare puntatori e riferimenti a quella classe, ma non istanze della classe. Il compilatore ha bisogno di definizione della classe in modo che sa la quantità di memoria da allocare per un'istanza della classe.

Sì. Ma è non possibile definire una classe senza dichiararlo.

A causa:. Ogni definizione è anche una dichiarazione

Hai fatto definire la classe. Non ha membri di dati, ma non è necessario.

Non sono sicuro di quello che vuoi dire. Il codice incollato è corretto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top