我收到错误:失踪;在*之前,但我并没有错过它

时间:2014-09-30 16:50:21

标签: c++ visual-c++

我已经对所有内容进行了评论,代码现在看起来像这样。

//AOBSClass.h

#ifndef __AOBSCLASSHDR__
#define __AOBSCLASSHDR__

#include "IDriver.h"
#include "ActuationClass.h"

namespace AOBS
{
    class AOBSClass
    {
    public:
        AOBSClass(IDriver *driver);
        ~AOBSClass();

        IDriver *drivers;

        ActuationClass act;     

    private:

    };
}

#endif



// ActuationClass.h

#ifndef __ACTUATIONCLASSHDR__
#define __ACTUATIONCLASSHDR__

#include "AOBSClass.h"

namespace AOBS
{
    class ActuationClass
    {
    public:

        ActuationClass();
        ~ActuationClass();

        AOBSClass *aobs; // This line here

    private:

    };
}
#endif

我一直在上面显示的行中得到以下错误。我不知道是什么导致它。

error C2143: syntax error : missing ';' before '*'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

我正在使用Visual Studio Express 2013。

3 个答案:

答案 0 :(得分:5)

这两个文件互相包含!只需加上

class AOBSClass;

在ActuationClass.h的开头。

答案 1 :(得分:3)

你有一个循环依赖。 ActuationClass.h包括AOBClass.h,反之亦然。

要解决此问题,请移除#include "AOBClass.h"中的ActuationClass.h,然后转发声明AOBSClass

namespace AOBS
{
    class AOBSClass;      // Forward declare
    class ActuationClass
    {
    public:

        ActuationClass();
        ~ActuationClass();

        AOBSClass *aobs;

    private:

    };
}

答案 2 :(得分:3)

您有循环包含。两个头文件都包含在内。一般来说,包括应该采用一种方式,如树形结构。

A包括B包括C等

另外,正如其他人所指出的那样:前瞻声明可以帮助解决这类问题