在对象上调用特定的函数(函数指针)
Call a particular function (function pointer) on an object
如果有一个函数指针
MyFunctionPointer myFunctionPointer;
我可以给它传递如下参数:
myFunctionPointer(1,2);
我希望做类似的事情,但在对象上调用特定的函数。我现在有这样的东西:
if(case1)
myObject.Case1();
else if(case2)
myObject.Case2();
是否可以这样做:
myObject.myFunctionPointer();
?
谢谢,大卫
检查:http://www.goingware.com/tips/member-pointers.html。也许对你有帮助?
:引用class Foo
{
public:
double One( long inVal );
double Two( long inVal );
};
int main()
{
double (Foo::*funcPtr)( long ) = &Foo::One;
Foo aFoo;
double result =(aFoo.*funcPtr)( 2 );
}
如果将函数指针声明为类的成员函数,则可以将函数赋值给该成员函数,然后再调用该函数。
如果你在你的类中声明了一个函数指针
int (*foo)(int) = NULL; // takes int arg, returns int
一旦你把方法赋值给一个函数,你就可以随心所欲地调用它了:
myObject.foo(42);
。
class myfoo
{
public:
int (*foo)(int);
};
int myfoofunc(int n)
{
return n/2;
}
...
myfoo f;
f.foo = myfoofunc;
cout << f.foo(2) << endl; // would output 1
如果两个成员函数具有相同的签名,则可以声明成员函数指针
return_type (CMyClass::*variable)(paramtype1, paramtype2) = &CMyClass::Case1;
并将其命名为
return_type ret = (myObject.*variable)(param1, param2);
相关文章:
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针