2011-08-04 59 views
1

我在頭文件C++中有一組函數指針對象,我將這個文件包含在主頭文件中,然後試圖在另一個C++文件中使用這些對象(初始化函數指針,然後通過代碼的另一部分使用這些指針),但我總是得到一個「多重定義」的錯誤。有沒有辦法如何在頭文件中聲明全局函數指針對象?函數指針對象在C++中的前向聲明

回答

4

您可以在主標題中執行此操作。 (Assusming你正在使用一種名爲FnPointer一個typedef)在實現文件

extern FnPointer fn; 

然後

FnPointer fn; 

extern意味着這個變量會存在,但我會在一些爲它分配空間後其他編譯單元)。

+0

我似乎忘記了 「外部」 關鍵字經過多年的C#編碼)))。非常感謝。 – shadeglare

3

只需像使用其他全局指針一樣使用它們即可。

  • 在其中一個頭文件中聲明函數指針爲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 
}