如何将对象的方法传递给外部函数
How to pass an object's method to an external function
给定一个名为myObj
、函数为doThis
和doThat
的对象,将对象(以及函数指令)传递给外部函数的最佳方式是什么?
作为我目前如何做到这一点的一个例子,我创建了一个外部函数void whatToDo( myClass myObj, string myFunction)
,其中我只需将doThis
或doThat
作为myFunction
传入并检查它:
void whatToDo( myClass myObj, string myFunction) {
if( myFunction == "doThis") myObj.doThis();
if( myFunction == "doThat") myObj.doThat();
}
然而,随着阶级的增长,这变得越来越糟糕。有没有办法将实际函数传递给whatToDo
,这样我就可以直接调用它了?
这就是指向成员函数的指针的作用:
void whatToDo(myClass& myObj, void (myClass::*p)())
{
// p is a pointer to a member function class myClass that
// takes no arguments and returns void
// you can invoke it thusly
(myObj.*p)();
}
您可以提供以下指针:
struct myClass {
void doThis();
void doThat();
};
myClass c;
whatToDo(c, &myClass::doThis); // will invoke c.doThis();
whatToDo(c, &myClass::doThat); // will invoke c.doThat();
相关文章:
- 调用外部函数,无法指定类型 C++/MVS
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- add_cuda_library输出:未解析的外部函数
- 外部函数在 main() 上调用时返回分段错误 11.(C++)
- 如何在Windows Media Foundation中获取相机外部函数?
- 内联asm编译器屏障(内存阻塞器)是算作外部函数,还是算作静态函数调用
- antlr cpp target 的标头部分不允许使用具有默认参数的外部函数
- 将多维数组传递给外部"C"函数为 void *
- llvm 调用一个以 char * 作为参数的外部函数
- 将 std::vector<bool> 传递给外部函数
- 如何在类向量中存储/使用外部函数指针
- LLVM - 如何使嵌套函数看到外部函数的变量
- CUDA9.2及以上版本中模板默认参数存在无法解决的外部函数错误
- 宏导入外部函数
- 如何在LLVM Pass中将字符串传递给外部函数
- C++:是否可以区分外部"C"函数和普通函数?
- 从外部函数访问外部结构属性
- 如何将成员声明为指向外部"C"函数的指针?
- C 将外部函数链接为成员函数
- LLVM JIT编译的程序找不到外部函数