#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