从其他 C++ 文件访问方法

access methods from other c++ files

本文关键字:访问 方法 文件 C++ 其他      更新时间:2023-10-16

我已经为主要功能和菜单功能实现了客户、DVD、收据、类和 2 个文件,我包含了所有的 .h 文件,但是当我使用一个函数时,例如来自菜单函数,它不起作用,并说函数未定义。我想在一个单独的.cpp文件中编写它,该文件称为 main,它是我的应用程序的驱动程序。

这是我的代码:

#ifndef CUSTOMER_H
#include "Customer.h"
#endif
#ifndef DVD_H
#include "DVD.h"
#endif
#ifndef MAIN_FUNC_H
#include "MainFunctions.h"
#endif
#ifndef MENU_FUNC_H
#include "MenuFunctions.h"
#endif
#ifndef RECEIPT_H
#include "Receipt.h"
#endif
using namespace std;
int main () {
    intro();
    return 0;
}

错误是:

错误

1 错误 C2129:静态函数"void intro(void)"声明,但 未定义 C:\Program Files (x86)\Microsoft Visual Studio 10.0\vc\include\xMemory 186 1 DVD_App

即使函数intro()是在MenuFunctions.h文件中定义的,并在MenuFunctions.cpp中实现

注意:2 个文件,MenuFunctions 和 MainFunctions 中没有类,只有静态函数我也在没有包含警卫的情况下尝试过,再次不起作用

如果你用static标记函数(注意 - 函数,而不是方法),它意味着编译单元(.cpp文件)的"本地"。因此,需要在此处声明和定义它,并且从其他 cpp 文件中不可见。因此,删除静态意味着可以跨编译单元访问该函数。

> 你不是在编译 MenuFunctions.cpp,为了让编译器知道 intro() 的定义,它需要实现代码。检查你的生成文件是否有,如果没有,请在 main() 之前包含 MenuFunctions.cpp或者指定 MenuFunctions.cpp以及编译器。

确保 MenuFunctions.cpp 文件有

#include "MenuFunctions.h"

在它的开始。错误显示它已声明,但未定义。保护#include "MenuFunctions.h",防止双重包含。