C++中函数指针的问题

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)

有什么我误解了函数指针,还是一个不同的问题?

Ale*_*nze 8

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)


Syn*_*xis 5

您不能同时声明函数和函数指针.

只需定义您的功能:

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)