我怎么如下定义声明的:声明函数指针
void (*bar)(A*){ }; //1
我首先想到的是,我声明和定义函数指针和函数指针指向。但这是错误的,因为到bar()
任何调用导致分段错误:
#include <iostream>
#include <vector>
#include <memory>
struct A{ };
void foo(A*){ std:cout << "foo" << std::endl; }
void (*bar)(){ };
int main(){
bar();
}
而且,我不能嵌入任何声明为“定义”:
void (*bar)(A*){ std::cout << "foo" << std::endl };
yeilds编译时错误。
那么,声明//1
是什么意思?
我认为他意味着整条线,而不仅仅是“// 1”。这是一个空分配/初始化。 – CoffeeandCode
这是否甚至编译?当然它必须是'(A * a)'? –
@ M.Shaw,您可以拥有未命名的参数 - 完全合法。 – Alejandro