c++ - 在构造函数C++中初始化指向函数的成员指针

标签 c++ initialization function-pointers

我在

中定义了这个成员
class X
{
   private:

      int (TMyClass::*pt2Member)(float, char, char);
}

我想在构造函数中将此成员初始化为 NULL。是否可以这样:

 X::X()
 {
      TMyClass::*pt2Member = NULL;
 }

?

什么是正确的语法?我的函数是 C++ 非静态函数。

那么,setter应该怎么写呢?

// declaration
void set_pointer_to_function(int(*pt2func)(float f, char c, char c));


// definition
void X::set_pointer_to_function(int(*pt2func)(float f, char c, char c))
{
     pt2Member = pt2func;
} 

正确吗?

最佳答案

您需要分配给指针本身,而不是它指向的内容。通过做你正在做的事情,你试图取消引用指针,这在这种情况下不起作用,因为它是一个方法指针,并且它指向的位置(以及因此取消引用它的副作用)是未定义的,因为你还没有分配给它。

TMyClass::pt2Member = NULL;

将因此工作。此外,您可以像下面这样将其与构造函数一起初始化:

X::X() : pt2Member(NULL)
{
}

关于c++ - 在构造函数C++中初始化指向函数的成员指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626329/

相关文章:

c - gdb单步执行动态函数

c - 按名称处理函数

c++ - 函数指针内存使用

c++ - 将通用引用转换为可调用的 void 指针,反之亦然

c++ - 无法理解 kern.osversion ‘14.5.0

C++ 初始化为函数

kotlin - 如何在 Kotlin 中初始化大的不可变映射?

javascript - 在javascript中使用for循环重复初始化变量

c++ - 基类中抽象方法的包装器实现

c++ - 为什么boost的interprocess_condition死锁在notify_one?