我有一个指向类中成员函数的函数指针。我如何初始化此函数指针,因为每次都会收到编译警告。这是代码:
//Node.h
class Node{
bool (Node::*strategyPointer)(const unsigned int&);
Node();
};
//Node.cpp
Node::Node(){
//How do I initialize my pointer here?
}
感谢
答案 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)
{
}
这样,您还可以strategyPointer
或if (strategyPointer!=nullptr)
轻松测试if (strategyPointer)
是否已被使用。
最后,这样做可以让你选择让Node
成为一个(抽象)基类,它实际上并不拥有正确签名的任何成员函数。