0

我已经为主要功能和菜单功能实现了客户、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 中没有类,只是静态函数

4

3 回答 3

2

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

于 2012-05-11T12:31:51.310 回答
0

您没有编译 MenuFunctions.cpp,以便编译器知道它需要实现代码的 intro() 的定义。检查你的makefile是否有,如果没有,在main()之前包含MenuFunctions.cpp,或者将MenuFunctions.cpp也指定给编译器。

于 2012-05-11T12:26:54.207 回答
0

确保MenuFunctions.cpp文件有

#include "MenuFunctions.h"

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

于 2012-05-11T12:27:51.837 回答