我正在开发一个 irc bot 来帮助我学习 c++,我想知道是否可以像这样将方法用作变量:
//Irc.h
public:
void *onJoin(char* sender, char* channel);
/////
//Main.cpp
void join(char* sender, char* channel)
{
cout << sender << endl;
cout << channel << endl;
}
int main()
{
Irc irc(stuff);
irc.onJoin = join;
}
最佳答案
是的,这是可能的。这些变量称为函数指针。可以这样写:
void onJoin( char* sender, char * channel );
int main(void)
{
void (*func)(char *,char *);
func = &onJoin;
func( "sender", "channel" );
}
或者您可以使用 std::function<>
为了那个原因。除 main()
中的第一行外,代码将相同。替换为
std::function<void(char*,char*)> func;
在我看来,这更易读。如果你使用它,那么不要忘记添加
#include <functional>
到文件的顶部。除了在函数中使用此类变量,您还可以将它们用作任何 struct
的成员变量。或 class
.
关于c++ - 在 C++ 中使用方法作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944395/