質問があいまいに見えることは知っていますが、他の言い方は思いつきませんでしたが、次のようなことは可能ですか:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
?
質問があいまいに見えることは知っていますが、他の言い方は思いつきませんでしたが、次のようなことは可能ですか:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
?
はい、可能です。以下は宣言するだけですwsx
class wsx;
この種の宣言は、2 つのクラスが相互に参照するときに必要になるため、前方宣言と呼ばれます。
class A;
class B { A * a; };
class A { B * b; };
そのうちの 1 つを前方宣言する必要があります。
これがクラスの定義です
class wsx
{
public:
wsx();
}
これがコンストラクターの定義です
wsx::wsx()
{
std::cout<<"WSX";
}
これは、クラスがどこかで定義されることを示す前方宣言です。
class wsx;
あなたの例では、
class wsx; // this is a class declaration
class wsx // this is a class definition
{
public:
wsx();
}
そうです、それを使用class wsx;
することで、クラスを定義せずにクラスを宣言することができます。クラス宣言では、そのクラスへのポインターと参照を宣言できますが、クラスのインスタンスは宣言できません。コンパイラは、クラスのインスタンスに割り当てるメモリ量を知るためにクラス定義を必要とします。
はい。ただし、クラスを宣言せずにクラスを定義することはできません。
理由:すべての定義は宣言でもあります。
クラスを定義しました。データ メンバーはありませんが、必須ではありません。
私はあなたが何を意味するのか分かりません。貼り付けたコードは正しいようです。