187得票9回答
如何将成员函数传递到期望自由函数的位置?

以下是问题的内容:考虑下面这段代码:#include <iostream> class aClass { public: void aTest(int a, int b) { printf("%d + %d = %d", a,...

156得票11回答
如何创建一个指向成员函数的指针并调用它?

如何获取类成员函数的函数指针,并在稍后使用特定对象调用该成员函数?我想写成这样: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &amp...

129得票8回答
如何将类成员定义为指向另一个成员函数的指针?

我想在一个类的成员中设置一个函数指针,该指针指向同一类中的另一个函数。我这样做的原因很复杂。 在这个例子中,我希望输出为"1"。 class A { public: int f(); int (*x)(); } int A::f() { return 1; } int main...

93得票7回答
C++中的指向成员运算符->*和.*是什么?

是的,我看过这个问题和这个FAQ,但我仍然不理解C++中的->*和.*是什么意思。这些页面提供了关于运算符(如重载)的信息,但似乎没有很好地解释它们是什么。 在C++中,->*和.*是什么?与->和.相比,何时需要使用它们?

69得票5回答
什么是 `int foo::*bar::*`?

C++ 有一个很棒的特性,就是可以创建指向成员类型的变量。最常见的用法似乎是获取方法的指针: struct foo { int x() { return 5; } }; int (foo::*ptr)() = &foo::x; foo myFoo; cout <&lt...

56得票2回答
一个令人困惑的typedef涉及到类作用域。

我正在阅读一个C++项目的代码,其中包含以下形式的一些代码:namespace ns { class A {}; class B {}; } struct C { typedef ns::A* ns::B::* type; }; 请问有人能解释一下这个typedef语...

54得票8回答
C++继承和成员函数指针

在C++中,成员函数指针能否用于指向派生(或甚至基类)的成员? 编辑: 也许通过一个例子可以更好地理解。假设我们有三个类X、Y和Z,它们按继承顺序排列。因此,Y具有一个基类X和一个派生类Z。 现在,我们可以为类Y定义一个成员函数指针p。写法如下:void (Y::*p)(); (为简单起见...

43得票1回答
为什么C++中不存在引用成员?

在C++中,我可以选择使用函数指针或函数引用(甚至是函数值,为了完整起见): void call_function_pointer (void (*function)()) { (*function) (); } void call_function_reference (void ...

40得票5回答
打印虚拟成员函数的地址

我正在尝试打印虚拟成员函数的地址。 如果我知道哪个类实现了该函数,我可以编写: print("address: %p", &A::func); 但是我想要做类似这样的事情: A *b = new B(); printf("address: %p", &b->fu...

34得票2回答
括号内成员函数地址出错

我发现了一些有趣的事情。错误信息已经说明了一切。为什么在获取非静态成员函数地址时不允许使用括号?我在gcc 4.3.4上进行了编译。#include <iostream> class myfoo{ public: int foo(int number){ ...