我在頭文件C++中有一組函數指針對象,我將這個文件包含在主頭文件中,然後試圖在另一個C++文件中使用這些對象(初始化函數指針,然後通過代碼的另一部分使用這些指針),但我總是得到一個「多重定義」的錯誤。有沒有辦法如何在頭文件中聲明全局函數指針對象?函數指針對象在C++中的前向聲明
1
A
回答
4
您可以在主標題中執行此操作。 (Assusming你正在使用一種名爲FnPointer一個typedef)在實現文件
extern FnPointer fn;
然後
FnPointer fn;
(extern
意味着這個變量會存在,但我會在一些爲它分配空間後其他編譯單元)。
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
}
相關問題
- 1. 函數指針的前向聲明typedef
- 2. 指向在類中聲明的對象的指針數組?
- 3. C++中的函數指針聲明
- 4. 聲明函數指針的
- 5. 指向對象指針的未聲明標識符向量
- 6. 在C中聲明指針
- 7. 向前聲明一個指向結構的指針數組?
- 8. C++成員函數指針,聲明
- 9. 在類聲明中聲明一個類對象的指針
- 10. 聲明函數指針
- 11. 聲明函數指針
- 12. 疑函數指針聲明
- 13. 指向C++中的函數對象的指針
- 14. C++虛擬函數的前向聲明
- 15. 是否可以在C++中聲明指向模板函數的void指針?
- 16. 函數指針的C++對象函數
- 17. C++指針數組聲明
- 18. 前面的對象聲明::在C++中
- 19. C++:聲明指針
- 20. C++指針聲明
- 21. 成員指向成員對象和聲明順序的指針
- 22. C++前向聲明和純虛函數
- 23. C++前向聲明和析構函數
- 24. Maxscript函數前向聲明
- 25. 聲明一個N指針數組返回指向函數的指針返回指向字符的指針
- 26. 聲明,分配和分配指向函數指針的指針數組
- 27. 在C++中聲明一個函數指針數組
- 28. 如何在C中聲明C++指針#
- 29. C中的前向聲明?
- 30. C++中的前向聲明
我似乎忘記了 「外部」 關鍵字經過多年的C#編碼)))。非常感謝。 – shadeglare