下面D::foo通过指向成员函数调用函数的方法将产生错误:必须使用.*或->*调用'f(...)'中的指针到成员函数...
当然这不是我们如何调用指针到 -成员职能.
正确的呼叫方式是(d.*f)(5);OR(p->*f)(5);
我的问题是,'有没有办法在没有左侧的类对象的情况下调用类的成员函数?我想知道我们是否可以将class object(this)作为常规参数传递?
在我看来,在一天结束时(在汇编/二进制级别),类的所有成员函数都是普通函数,它们应该在n + 1个参数上运行,其中(+ 1表示this)
如果我们谈论D::foo下面的函数,在汇编/二进制级别它应该运行两个参数:
this)int.那么,有没有一种方法(或hack)调用D::foo传递给它的类对象作为函数参数而不是. or -> or .* or ->*在类对象上使用运算符?
示例代码:
#include <iostream>
using namespace std;
class D {
public:
void foo ( int a ) {
cout << "D" << endl;
}
int data;
};
//typedef void __cdecl ( D::* Func)(int);
typedef void ( D::* …Run Code Online (Sandbox Code Playgroud)