#include <vector>
typedef void (* const MyType)(void *, void *);
static void exampleFunction(void *param1, void *param2)
{
// ...
}
int main(int argc, char* argv[])
{
std::vector<MyType> myVector;
myVector.push_back(exampleFunction); // fails.
}
這裏是代碼,它似乎與//fails
行不可編譯。 我把它評論出來,沒有問題。但如果它打開,這是我在XCode中遇到的錯誤:std :: vector使用push_back時的語義問題
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/memory:1593:27: Cannot initialize a parameter of type 'void *' with an lvalue of type 'void (*const *)(void *, void *)'
任何人都有任何想法,爲什麼發生這種情況?
在此先感謝。
因爲它是'const'。畢竟,STL對元素有一些要求。 – keltar
'std :: vector'和'const'通常不能很好地一起玩。 – fredoverflow
一個offtopic建議:儘量避免'void *'。改用模板。 – Manu343726