0

私は現在、次の2つのクラスを持っています

class TOrder 
{
public:

private:
    .......
};  

今私の他のクラスは次のとおりです。

#include "TOrder.h"

namespace namespaceA
{
    namespace namespaceB
    {
        class OrderDis
        {
        private:
            TOrder* frmPointer;
                    .....
        };

    }       
}

上記は正常に機能し、TOrder で OrderDis のオブジェクトを使用すると問題が発生します。

#include <QMainWindow>
#include "OrderDis"  //Added - Creates Problem
class TimedOrder 
{
public:

    .......
};

問題を解決するために前方宣言を使用する方法について何か提案はありますか?

4

3 に答える 3

1

OrderDispatcherTimeOrder.h で転送できます

namespaceA
{
    namespaceB
    {
        class OrderDispatcher;
    }
}

class TimedOrder 
{
//...
};
于 2013-09-26T03:54:52.793 に答える
0

クラスでポインタを使用するだけなので、ファイルに含めないだけでTimedOrder解決できます。代わりに、クラスを宣言するだけです。OrderDispatcherTimedOrder.hOrderDispatch.hTimedOrder

class TimedOrder;

名前空間などをいじる必要はありません。

注: どの名前空間でも宣言することはできません。代わりに、現在実行している場所で宣言してください#include

于 2013-09-26T03:54:13.847 に答える
0

前方宣言は次のように記述できます。

namespace A{ namespace B{ class OrderDispatcher; } }
于 2013-09-26T03:54:53.397 に答える