声明指向函数的指针的一般形式是什么,比如返回类型 X 并接受输入参数 &Y?
是吗:
X my_function(Y &y){
//code
}
X (*my_pointer) (Y &y) = my_function;
?
X (*fptr)(Y&) = my_function;
或者:
auto fptr = my_function; // c++11
或者:
std::function<X(Y&)> fptr(my_function); // c++11, boost::function if not
你写的没问题,但如果你只想声明一个该类型的函数指针,通常不写函数参数的名称:
X (*my_pointer) (Y&) = my_function;
根据您的口味,您可能想要更多 C++11-ish 并编写:
#include <type_traits>
std::add_pointer<X(Y&)>::type my_pointer = my_function;
使用模板别名可以使其更具可读性:
#include <type_traits>
template<typename T>
using AddPointer = typename std::add_pointer<T>::type;
AddPointer<X(Y&)> my_pointer = my_function;
或者甚至使用auto
并忘记明确命名函数类型,正如 hmjd 在他的回答中所建议的那样。如果您以后需要检索类型,您可以执行以下操作:
decltype(my_pointer)
是吗:
X my_function(Y &y){
//code
}
X (*my_pointer) (Y &y) = my_function;
?
是的