gpt4 book ai didi

c++接口(interface)告诉我我的参数尚未声明

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:33 25 4
gpt4 key购买 nike

我有一个通用类,用于自动机的许多状态。声明如下:

#ifndef STATE_H_
#define STATE_H_
#include "Automat.h"

class State {
public:
virtual void readChar(char c, Automat* automat) = 0;
virtual ~State(){};
};

#endif /* STATE_H_ */

我在 eclipse 中遇到这个错误:

这条线有多个标记

  • 参数 2 没有从“Automat* const”到“int*”的已知转换
  • 虚拟 void State::readChar(char, int*)
  • “Automat”尚未声明

我的自动售货机如下:

    #ifndef Automat_H_
#define Automat_H_
#include "../../Scanner/src/IScanner.h"
#include "./States/State.h"

class Automat {
public:
int count;
State* current;
IScanner* scanner;
Automat(IScanner *s);
void readChar(char c);
void setState(State *s);
void error();
~Automat();
};

#endif /* Automat_H_ */

最后是 Automat 的实现,我将省略一些方法。

#include "Automat.h"
#include "./States/StartState.h"


Automat::Automat(IScanner *s) {
current = StartState::makeStartState();
scanner = s;
count = 0;
}

void Automat::readChar(char c) {
current->readChar(c, this);
}

我不知道是什么原因造成的。我需要在接口(interface)中声明东西吗?为什么要转换参数?

提前谢谢大家。

最佳答案

两个 header 试图相互包含,这是不可能的。

幸运的是,两个类定义都不需要另一个的完整定义。每个只处理指向另一个的指针,为此只需要一个声明。所以替换

#include "Automat.h"

class Automat;

State 也是如此。

关于c++接口(interface)告诉我我的参数尚未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19832805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com