我一直在尝试定义两个类
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之后定义...
那么如何实现双向关系?
答案 0 :(得分:4)
您应该将实现细节移到单独的文件中,这是最好和最简单的方法:
<强> 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
}
答案 1 :(得分:0)
从类定义中取出实现并将它们移动到实现文件中。