枚举类型的函数返回错误"was not declared in this scope"

function of enumeration-type returns error "was not declared in this scope"

本文关键字:declared not in this scope was 枚举 函数 返回 错误 类型      更新时间:2023-10-16

我在头文件中声明了一个名为include .h的枚举,如下所示:

#include <xxx>
#iclude "tools.h"
enum Return_Main_Menu { Start, Credits, Help };

另外我还有tools.cpp:

#include "tools.h"
Return_main_menu mainmenu()
{
  // ...
}

tools.h:

#include "including.h"
#include "tools.h"
Return_main_menu mainmenue();

当然还有一个main.cpp函数调用Return_Main_Menu mainmenu():

#include "including.h"
using namespace std;
int main() 
{
cout << "Startn" << endl;
Return_main_menu mainm = mainmenu();
return 0;
}

我没有看到任何问题,但是编译器返回错误:

../xyy/main.cpp: In function 'int main()':
../xyy/main.cpp:9:46: error: 'mainmenu' was not declared in this scope

你调用了函数

Return_main_menu hauptmenue();
.h文件中的

Return_main_menu mainmenu()

在.cpp文件中,枚举被声明为

enum Return_Main_Menu { Start, Credits, Help };

所以你混淆了一些名字。请记住c++是区分大小写的,所以Return_Main_Menu和Return_Main_Menu是不一样的。

您需要为main.cpp文件转发声明mainmenu()。您在tool.h中向前声明hauptmenue(),但不包括在main.cpp中,递归地包含在tools.h中!