[英]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.