例如:
struct A { void m() { } };
void stream_print() {
void(A::*p)(void) = &A::m;
std::cerr << p << std::endl;
}
void printf_print() {
void(A::*p)(void) = &A::m;
fprintf(stderr, "%p", p);
}
Run Code Online (Sandbox Code Playgroud)
stream_print()函数总是打印"1",这显然不是我想要的.printf_print无法编译,因为p无法转换为void*.
我需要的是一个方法指针的唯一标识符,我可以存储在容器中.我知道这听起来不错,但我正在开发一种可以从中受益的单元测试小玩具.我不担心方法的重载,我知道如何获得指向特定重载的指针.
我正在使用启用了C++ 0x的g ++ 4.4.3.
如果您有任何疑问,请告诉我.
c++ ×1