0

ツリー オブジェクト構造から単一の cpp ファイルに C++ クラスを出力する小さなジェネレーターを作成しています (クラスの出力の順序はこのツリーによって指定されるため、固定されています)。

シンプルにするために、すべてを1つのファイルに保持する方法があればいいと思います。

問題は、これらのクラスがメンバー関数を使用して相互に対話することがあり、前方宣言が機能しない場合があることです。

例:

#include <iostream>

using namespace std;


class B;
B* global_b=NULL;

class A;
A* global_a=NULL;

class A {

    public:
    A() {}
    ~A() {}

    void accessB()
    {
        global_b->setValue(1);
    }

    int getValue()
    {
        return 2;
    }

};

class B {
    public:
    B() : j(0) {}
    ~B(){}

    void setValue(int i)
    {
        j = i + global_a->getValue();
    }
    int j;
};


int main()
{
    global_b = new B();
    global_a = new A();

    global_a->accessB();
    cout << "Hello world!" << endl;
    return 0;
}

提案/アイデアはありますか?ありがとう。

4

2 に答える 2

1

通常、次のようにします。

class A {

    public:
    A() {}
    ~A() {}

    void accessB();
  ...
};

次に、 A と B の両方が宣言された後のどこかで:

void A::accessB()
{
    global_b->setValue(1);
}
于 2013-08-07T19:38:43.987 に答える