2012-10-17 47 views
0

我正在處理一個帶.h文件和.cpp文件的項目。我正在寫一個函數,我想利用一系列函數指針,其中數組中的每個函數都是基於與枚舉相關的條件調用的。我已經在我的.h文件中聲明瞭5個函數和數組本身。我應該在哪個文件中設置數組的每個值等於相應的函數(.h或.cpp)?在C++中聲明一個函數指針數組

+0

只能在H文件中放入cpp文件以外的內容。任何其他實體是否可以訪問這些信息?如果是的話,.h如果不是,.cpp。有了這樣一個簡單的項目,它並不重要。 –

+0

真是一個品味的問題。我會在頭文件中初始化數組。 – m0skit0

回答

1

我預測如果數組定義本身在.h文件中,你會遇到問題。

你應該定義陣列(以及值的設置)在你的.c文件中。

而在.h文件聲明數組作爲一個外部的,就像這樣:

extern func_pointer_t array[]; 

但全局是一般一個壞主意,你應該考慮得到一個函數指針提供了一個API的陣列。

func_pointer_t get(unsigned int i); 
1

通常,變量賦值發生在「.cpp」文件中。如果你需要全局的話,你可以把一些東西放在一個.h文件中。

另外,請注意,數組中只能存在一個函數指針類型。換句話說,所有的功能必須具有相同的簽名。

如果更改數組以保存函數對象或指向函數對象的指針,則可以有許多種基函數對象派生的函數對象。請參閱std::vectorstd::map

+0

+1只是好奇,你能有一個指向函數指針的指針嗎?如果是這樣你的數組可以存儲這些,不是嗎? –

+0

@ AK4749:與整數一樣,指向整數指針的指針是* same *數據類型的另一個間接指針。每個*函數簽名*被視爲函數指針的不同類型。所以,指向函數指針的指針不會幫助需要指向* any *函數的人。 –

+0

嗯是有道理的,如果我想過這種方式謝謝! –