C ++中的函数指针对象前向声明

时间:2011-08-04 08:02:46

标签: c++ function-pointers forward-declaration

我在头文件C ++文件中有一组函数指针对象,我在主头文件中包含此文件,然后尝试在另一个C ++文件中使用这些对象(初始化函数指针,然后通过另一部分使用这些指针)代码)但我总是得到一个“多重定义”的错误。有没有办法在头文件中声明全局函数指针对象?

2 个答案:

答案 0 :(得分:4)

您可以在主标题中执行此操作。 (假设您正在使用名为FnPointer的typedef)

extern FnPointer fn;

然后在您的实施文件中

FnPointer fn;

extern表示此变量将存在,但我稍后将在其他编译单元中为其分配空间。)

答案 1 :(得分:4)

就像使用任何其他全局指针一样使用它们。

  • 在其中一个头文件中声明函数指针为extern
  • 在标识变量&的源文件之一中包含标题。
  • 在引用变量的所有源文件中包含标题。

第1步:

file.h

extern Func_Pointer ptr1;  /* Declaration of the function pointer */ 

第2步:
file.cpp

 #include "file.h"  /* Declaration is available through header */  

  /* define it here */ 
  Func_Pointer ptr1 = //some address;    

第3步:
someOtherfile.cpp

#include "file.h" 

void doSomething(void) 
{     
    *(ptr1)(); //Use it here
} 
相关问题