我一直在尝试定义两个类
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/