我有一个指向类中成员函数的函数指针。我如何初始化这个函数指针,因为我每次都会收到编译警告。这是代码:
//Node.h
class Node{
bool (Node::*strategyPointer)(const unsigned int&);
Node();
};
//Node.cpp
Node::Node(){
//How do I initialize my pointer here?
}
谢谢
我有一个指向类中成员函数的函数指针。我如何初始化这个函数指针,因为我每次都会收到编译警告。这是代码:
//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) {}
我不会将它初始化为特定功能,最好在您实际需要时为其分配该功能。而是将其初始化为空:
Node::Node() : strategyPointer(nullptr)
{
}
这也可以让您轻松测试是否strategyPointer
已被使用、被使用if (strategyPointer!=nullptr)
或仅被使用if (strategyPointer)
。
最后,这样做可以让您选择Node
成为(抽象)基类,该基类实际上不具有正确签名的任何成员函数。