質問

このような何かを行うことは可能ですが、私は質問があいまいなようだけど、私はそれを置くために他の方法を考えることができませんでした、しかします:

#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; };
そのうちの一つは、前方その後、宣言する必要があります。

他のヒント

このクラスの定義です。

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;を使用してそれを定義せずにクラスを宣言することが可能です。クラス宣言を使用すると、ポインタとそのクラスへの参照ではなく、クラスのインスタンスを宣言することができます。それは、クラスのインスタンスに割り当てるメモリの量を知っているので、コンパイラは、クラス定義を必要とします。

はい。しかし、それを宣言せずにクラスを定義することは可能のありませんのです。

そのため、のすべての定義はまた、宣言である

あなたは、クラスを定義しました。それは何のデータメンバを持っていないが、それは必要はありません。

私はあなたが何を意味するかわかりません。あなたが貼り付けられたコードが正しい見えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top