如何在C中使用变量作为函数?
发布时间:2020-12-16 10:21:02 所属栏目:百科 来源:网络整理
导读:在某些语言中(我想到了 PHP和 JavaScript),我可以使用变量作为函数.例如: PHP: Class::$var_function(); 是否可以在C中以不需要switch或if语句的方式进行此操作? 解决方法 詹姆斯的回答可能是最好的.但是,如果您使用的是兼容c 11的编译器,则可以使用std ::
在某些语言中(我想到了
PHP和
JavaScript),我可以使用变量作为函数.例如:
PHP: Class::$var_function(); 是否可以在C中以不需要switch或if语句的方式进行此操作? 解决方法
詹姆斯的回答可能是最好的.但是,如果您使用的是兼容c 11的编译器,则可以使用std :: function
例如: #include <functional> #include <iostream> typedef std::function<void(int a)> callback_t; class A { public: void fn(int a) { std::cout << a << std::endl; } }; void fn2(int b) { std::cout << a << std::endl; } int main() { A a; callback_t c = std::bind(&A::fn,a,std::placeholders::_1); c(1); c = fn2; c(2); return 0; } 还有一个提升版本(我从来没用过这个,所以它可能是错的): #include <boost/function.hpp> #include <iostream> typedef boost::function<void(int a)> callback_t; class A { public: void fn(int a) { std::cout << a << std::endl; } }; void fn2(int b) { std::cout << a << std::endl; } int main() { A a; callback_t c = boost::bind(&A::fn,boost::placeholders::_1); c(1); c = fn2; c(2); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |