C ++在构造函数中初始化函数指针

时间:2013-05-31 16:23:53

标签: c++ member-function-pointers

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

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

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

    //How do I initialize my pointer here?
}

感谢

2 个答案:

答案 0 :(得分: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) {}

答案 1 :(得分:1)

我不会将它初始化为特定的函数,最好在实际需要时为其分配该函数。而只是将其初始化为null:

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

这样,您还可以strategyPointerif (strategyPointer!=nullptr)轻松测试if (strategyPointer)是否已被使用。

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