1

我有这个成员定义在

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;
} 

这是对的吗?

4

2 回答 2

5

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

TMyClass::pt2Member = NULL;

因此会起作用。此外,您可以将其与构造函数一起初始化,如下所示:

X::X() : pt2Member(NULL)
{
}
于 2012-09-27T16:52:00.013 回答
1

像这样:

class TMyClass;

class X
{
private:
    int (TMyClass::*pt2Member)(float, char, char);
public:
    X() : pt2Member(NULL) { }
};
于 2012-09-27T16:52:26.657 回答