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

时间:2012-05-11 12:21:26

标签: c++ header include

我已经为主要功能和菜单功能实现了客户,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中没有类,只是静态函数 我也试过没有包含警卫,并且再次没有工作

3 个答案:

答案 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"以防止双重包含。