0

ここまでしか宣言されていないメソッドを定義するためにクラスを再宣言する方法はありますか?

例えば。何かのようなもの:

class A
{
    void a();
    void b() {}
}

class A
{
    void a() {}
}

それ以外の

class A
{
    void a();
    void b() {}
}

A::a() {}    

その理由は、ヘッダーを使用せずに、クラス定義内で定義されたメソッドを使用して多くのコードを作成したためです。今まで循環参照はありませんでしたが、最近必要になりました。Type::methodクラスの後者の定義の前に知っている必要があるメソッドはごくわずかであるため、構文によってメソッドの束を定義するのは好きではありません。

backward declarationそのため、循環参照の前にいくつかのメソッドのみを宣言または定義し、後でクラス全体を定義するのが好きです。

4

2 に答える 2

3

いいえ、クラスを再定義する方法はありません。

C++ 言語標準によると、クラス定義は次のとおりです。

class-specifier:
    class-head { member-specification_opt }

標準では、メンバーの指定はクラス定義内で完了する必要があると明示的に述べています。

クラスのメンバーは、データ メンバー、メンバー関数 (9.3)、ネストされた型、および列挙子です。クラス定義のメンバー仕様は、クラスのメンバーの完全なセットを宣言します。メンバーを他の場所に追加することはできません

また、標準はクラスの再定義の例を示しています:

struct S { int a; };
struct S { int a; }; // error, double definition

S を 2 回定義しているため、形式が正しくありません。

于 2014-01-04T09:25:31.113 に答える