1

我有一个指向类中成员函数的函数指针。我如何初始化这个函数指针,因为我每次都会收到编译警告。这是代码:

//Node.h
class Node{
    bool (Node::*strategyPointer)(const unsigned int&);
    Node();
};

//Node.cpp
Node::Node(){

    //How do I initialize my pointer here?
}

谢谢

4

2 回答 2

1

首先,你没有任何可以合法指向的方法,所以让我们添加一些:

class Node{
    bool (Node::*strategyPointer)(const unsigned int&);

    bool firstStrategy(const unsigned int&)  { return true;  }
    bool secondStrategy(const unsigned int&) { return false; }

public:
    Node();
};

现在我们有一个有效的值来初始化它,只需使用:

Node::Node() : strategyPointer(&Node::firstStrategy) {}
于 2013-05-31T16:29:45.170 回答
1

我不会将它初始化为特定功能,最好在您实际需要时为其分配该功能。而是将其初始化为空:

Node::Node() : strategyPointer(nullptr)
{
}

这也可以让您轻松测试是否strategyPointer已被使用、被使用if (strategyPointer!=nullptr)或仅被使用if (strategyPointer)

最后,这样做可以让您选择Node成为(抽象)基类,该基类实际上不具有正确签名的任何成员函数。

于 2013-05-31T16:33:35.570 回答