34得票5回答
为什么指向函数的指针的大小与指向成员函数的指针的大小不同?

指针难道不只是一个地址吗?还是我漏了什么? 我测试了几种类型的指针: 任何变量的指针都是相同的(在我的平台上为8B) 函数指针的大小与变量指针相同(再次为8B) 具有不同参数的函数指针仍然相同(8B) 但是成员函数指针更大 - 在我的平台上为16B。 三件事: 为什么成员函数指...

33得票4回答
指向类成员的指针作为模板参数

我希望使用类成员指针作为模板参数,例如: template <class Class, class Result, Result Class::*Member> struct MyStruct { // ... }; 使用这个结构体像这样 MyStruct<So...

32得票3回答
指向虚成员函数的指针。它是如何工作的?

考虑以下的C++代码:class A { public: virtual void f()=0; }; int main() { void (A::*f)()=&A::f; } 如果我要猜的话,在这个上下文中&A::f可能意味着"A实现的f()的地址"...

30得票3回答
C++:指向虚成员函数单态版本的指针?

在C++中,可以获取一个类的(非静态)成员函数的指针,并在稍后对一个对象上调用它。如果该函数是虚函数,则根据对象动态类型的不同进行动态分配调用。还可以通过显式提供包含要使用的版本的范围,以单形式地调用对象的虚成员函数(而不使用成员指针)。以下代码演示了这一点:#include <iost...

27得票4回答
在C++中将成员函数指针传递给成员对象

我在使用C++中的函数指针时遇到了问题。以下是我的示例:#include <iostream> using namespace std; class bar { public: void (*funcP)(); }; class foo { public: b...

23得票3回答
C++运算符“取地址”和“作用域解析”的优先级问题

你好,我有以下代码,在使用Microsoft Visual Studio 2008编译时出现了错误:class B { protected: int b; }; class A : public B { public: void foo() { &B::b; } /...

22得票4回答
指向成员的引用指针是否合法?

假设有这样一个情况:// This is all valid in C++11. struct Foo { int i = 42; int& j = i; }; // Let's take a pointer to the member "j". auto b = &...

22得票2回答
成员函数指针的奇怪C++规则是什么?

可能重复: 带有括号成员函数地址错误 在这个最近的问题中,OP遇到了C++语言的一个奇怪规定,如果成员函数名被括号括起来,则无法获取该成员函数的地址。例如,以下代码是非法的: struct X { void foo(); }; int main() { void (...

21得票3回答
C++指向虚函数的指针

如果您有这样的结构体struct A { void func(); }; 还有像这样的引用A& a; 你可以通过以下方式获取其func方法的指针:someMethod(&A::func); 那么如果该方法是虚拟的,并且你在运行时不知道它是什么?为什么不能像这样获取指针?...

20得票5回答
在void*和成员函数指针之间转换

我目前使用的是 GCC 4.4,我遇到了一个棘手的问题,就是在void*和成员函数指针之间进行类型转换时困难重重。我正在尝试编写一个易于使用的库,将 C++ 对象绑定到 Lua 解释器上,如下所示: LuaObject<Foo> lobj = registerObject(L, ...