如何在以下场景中使用前向声明

时间:2013-09-26 03:49:12

标签: c++ forward-declaration

我目前有以下两个班级

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:

    .......
};

有关如何使用远期声明来解决我的问题的任何建议吗?

3 个答案:

答案 0 :(得分:1)

您可以在TimeOrder.h中转发OrderDispatcher

namespaceA
{
    namespaceB
    {
        class OrderDispatcher;
    }
}

class TimedOrder 
{
//...
};

答案 1 :(得分:0)

由于您只使用TimedOrder类中的OrderDispatcher指针,因此只需在TimedOrder.h文件中不包含OrderDispatch.h即可解决此问题。而只是声明 TimedOrder类:

class TimedOrder;

无需使用命名空间等等。

注意:您不能在任何名称空间中声明它,而是在您现在执行#include的位置声明它。

答案 2 :(得分:0)

前瞻性声明可以写成:

namespace A{ namespace B{ class OrderDispatcher; } }