c++ - 在 C++ 中使用方法作为变量

标签 c++ variables methods

我正在开发一个 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/

相关文章:

c++ - 位集和有符号值

python将结构和指针传递给c函数以进行输入和输出

c++ - 无法使用 Visual Studio 2015 命令行工具编译和链接简单的 C++ 程序

JavaScript 增量 y=++x

java - 如果数据库包含现有数据,如何仅在 Activity 中调用一次方法?

c++ - 数组末尾指向新分配的数组 C++

.net - 在 Visual Studio 2015 中调试时值不正确

python - 如果两个变量指向同一个对象,为什么重新分配一个变量不会影响另一个变量?

ruby 显式方法返回类型

methods - 使用Spring DSL访问Camel Context版本(2.9.1)中抽象类的方法