我有一个函数指针指向类中的成员函数。我如何初始化这个函数指针,因为我每次都会收到编译警告。下面是代码:C++在构造函数中初始化函数指针
//Node.h
class Node{
bool (Node::*strategyPointer)(const unsigned int&);
Node();
};
//Node.cpp
Node::Node(){
//How do I initialize my pointer here?
}
感谢
我有一个函数指针指向类中的成员函数。我如何初始化这个函数指针,因为我每次都会收到编译警告。下面是代码:C++在构造函数中初始化函数指针
//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) {}
当我在构造函数中使用strategyPointer(&Node :: firstStrategy){}时,它给我一个语法错误。那句话对吗? – user2105632
是的。显示_minimal完整的code_(包括你的'firstStrategy'或任何方法的声明)_和错误_如果你想让我们帮助他们。 – Useless
谢谢我修好了 – user2105632
我不想要把它放到一个特定的函数中,最好在实际需要时将它分配给它。而是仅仅把它初始化为空:
Node::Node() : strategyPointer(nullptr)
{
}
这也可以让你轻松地测试strategyPointer
是否已被使用,由if (strategyPointer!=nullptr)
或只是if (strategyPointer)
。
最后,这样做可以让您选择让Node
成为一个(抽象)基类,它实际上并不拥有任何正确签名的成员函数。
您目前如何进行初始化,以及您得到了哪些警告? – Angew
我目前没有做任何初始化。我在成员函数中使用它们,如下所示:strategyPointer =&Node :: peeringStrategyOpen;我收到错误:成员strategyPointer未在此构造函数中初始化。 – user2105632
这听起来不像是给我的任务中的错误,请显示(最小)完整的代码。 – Useless