繁体   English   中英

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

[英]C++ Initialize function pointer in constructor

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

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

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

    //How do I initialize my pointer here?
}

谢谢

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

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) {}

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

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

这也可以让你轻松地测试是否strategyPointer已被使用,由if (strategyPointer!=nullptr)或只是if (strategyPointer)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM