我一直在尝试定义两个类

class state03: public state
{
public:
    std::string name;
    state03(bool inAcceptState, bool inRejectState)
    {
        setRejectState(inRejectState);
        setAcceptState(inAcceptState);
        name="State 03";
    }

    state * evalNextState(char input)
    {
         if(input==' ')
        {
            return this;
        }
         if(isalpha(input) || input=='_')
         {
             return new state04(false,false);
         }
        return new RejectState();
    }
};

class state04: public state
{
public:
    std::string name;
    state04(bool inAcceptState, bool inRejectState)
    {
        setRejectState(inRejectState);
        setAcceptState(inAcceptState);
        name="State 04";
    }
    state * evalNextState(char input)
    {
        if(isalnum(input) || input=='_')
        {
            return this;
        }
        if(input==',')
        {
            return new state03(false,false);
        }
        return new RejectState();
    }
};

并且由于编译器从上到下扫描代码,我收到此编译错误,即类state04未定义,因为它是在类state03之后定义的...

那么如何实现双向关系?

最佳答案

您应该将实现详细信息移动到单独的文件中,在这种情况下,这是最好和最简单的方法:

state03.h

class state03 : public state {
   // ...
   state * evalNextState(char input);
}

state04.h
class state04 : public state {
   // ...
}

state03.cpp
#include "state03.h"
#include "state04.h"

state * state03::evalNextState(char input) {
    // your code here
}

关于c++ - C++中的双向关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8107552/

10-13 05:13