我在
中定义了这个成员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;
}
是正确的吗?
答案 0 :(得分:5)
您需要指定指针本身,而不是它指向的指针。通过做你正在做的事情,你试图取消引用指针,这在这种情况下不起作用,因为它是一个方法指针,并且它指向的位置(因此取消引用它的副作用)是未定义的,因为你还没有分配给它。
TMyClass::pt2Member = NULL;
因此会有效。此外,您可以将其与构造函数一起初始化,如下所示:
X::X() : pt2Member(NULL)
{
}
答案 1 :(得分:1)
像这样:
class TMyClass;
class X
{
private:
int (TMyClass::*pt2Member)(float, char, char);
public:
X() : pt2Member(NULL) { }
};