我已经为主要功能和菜单功能实现了客户,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中没有类,只是静态函数 我也试过没有包含警卫,并且再次没有工作
答案 0 :(得分:2)
如果使用static
标记函数(注意 - 函数,而不是方法),则它应该是编译单元(.cpp文件)的“本地”。因此需要在那里声明和定义,并且从其他cpp文件中看不到它。因此,删除静态意味着可以跨编译单元访问该函数。
答案 1 :(得分:0)
您没有编译MenuFunctions.cpp,以便编译器知道它需要实现代码的intro()的定义。如果你有makefile,请检查你的makefile,如果没有,请在main()之前包含MenuFunctions.cpp,或者将MenuFunctions.cpp指定给编译器。
答案 2 :(得分:0)
确保 MenuFunctions.cpp 文件有
#include "MenuFunctions.h"
一开始。错误说它已声明,但未定义。保护#include "MenuFunctions.h"
以防止双重包含。