Mlo*_*loc 5 c++ function-pointers
我打算使用函数指针在类中实现不同的函数.但是,在尝试实现一个这样的功能时,我遇到了一些麻烦.
代码在这里:
std::vector<int> * (*create_vector)()
{
std::vector<int> * vec_p = new std::vector<int>;
return vec_p;
}
Run Code Online (Sandbox Code Playgroud)
错误如下:
3: [Error] expected primary-expression before '*' token
3: [Error] 'vec_p' was not declared in this scope
3: [Error] expected '}' before ';' token
4: [Error] expected unqualified-id before 'return'
5: [Error] expected declaration before '}' token
Run Code Online (Sandbox Code Playgroud)
有什么我误解了函数指针,还是一个不同的问题?
std::vector<int> * (*create_vector)()声明一个指向函数的指针.一个指针.不是功能.你不能继续使用指针并假装它是一个函数并定义它的主体.您需要单独声明两者:
std::vector<int> * create_vector()
{
std::vector<int> * vec_p = new std::vector<int>;
return vec_p;
}
std::vector<int> * (*pcreate_vector)() = create_vector;
Run Code Online (Sandbox Code Playgroud)
您不能同时声明函数和函数指针.
只需定义您的功能:
std::vector<int>* create_vector()
{
std::vector<int>* vec_p = new std::vector<int>;
return vec_p;
}
Run Code Online (Sandbox Code Playgroud)
然后,最好是制作一个typedef(代码可读性):
typedef std::vector<int>* (*create_vector_func)();
Run Code Online (Sandbox Code Playgroud)
现在你可以使用它:
create_vector_func myFunc = &create_vector;
Run Code Online (Sandbox Code Playgroud)