调用和初始化 class 的静态成员函数
Calling and initializing static member function of class
我有以下代码:
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
class A {
public:
int f();
int (A::*x)();
};
int A::f() {
return 1;
}
int main() {
A a;
a.x = &A::f;
printf("%d\n",(a.*(a.x))());
}
我在哪里可以正确初始化函数指针。但是我想让函数指针成为静态的,我想在这个 class 的所有对象中维护它的单个副本。
当我将其声明为静态时
class A {
public:
int f();
static int (A::*x)();
};
我不确定 way/syntax 将其初始化为函数 f。任何资源都会有所帮助
静态成员函数指针(我猜你已经知道这不同于静态成员函数指针)是一种静态成员数据,所以你必须在 class 就像处理其他静态成员数据一样。
class A
{
public:
int f();
static int (A::*x)();
};
// readable version
using ptr_to_A_memfn = int (A::*)(void);
ptr_to_A_memfn A::x = &A::f;
// single-line version
int (A::* A::x)(void) = &A::f;
int main()
{
A a;
printf("%d\n",(a.*(A::x))());
}
我有以下代码:
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
class A {
public:
int f();
int (A::*x)();
};
int A::f() {
return 1;
}
int main() {
A a;
a.x = &A::f;
printf("%d\n",(a.*(a.x))());
}
我在哪里可以正确初始化函数指针。但是我想让函数指针成为静态的,我想在这个 class 的所有对象中维护它的单个副本。 当我将其声明为静态时
class A {
public:
int f();
static int (A::*x)();
};
我不确定 way/syntax 将其初始化为函数 f。任何资源都会有所帮助
静态成员函数指针(我猜你已经知道这不同于静态成员函数指针)是一种静态成员数据,所以你必须在 class 就像处理其他静态成员数据一样。
class A
{
public:
int f();
static int (A::*x)();
};
// readable version
using ptr_to_A_memfn = int (A::*)(void);
ptr_to_A_memfn A::x = &A::f;
// single-line version
int (A::* A::x)(void) = &A::f;
int main()
{
A a;
printf("%d\n",(a.*(A::x))());
}