我正在使用boost::function
将函数传递给Button
构造函数,以便它保存该函数。每当它被激活时调用它。
typedef boost::function< void() > Action;
在我的 TitleState 中,我构建了一个像这样的 Button。
m_play(
ButtonAction, // This is where I pass a function to Button's Action argument
sf::Vector2f( 500, 400 ),
sf::IntRect( 500, 400, 700, 500 )
)
其中 ButtonAction 是static void
TitleState 标头中私有的函数,在实现文件中定义为通过 std::cout 简单地输出到控制台(仅作为测试它是否工作)。
在我的代码中,如果鼠标单击 TitleStateHandleEvents
函数中的按钮,程序会调用该按钮的Activate
函数,如下所示。
void Button::Activate() const {
m_action(); // m_action is the Action member that holds the ButtonAction I passed earlier
}
问题是,当程序尝试链接时,我收到此错误....
unresolved external symbol "public: void __thiscall Button::Activate(void)" (?Activate@Button@@QAEXXZ) referenced in function "public: virtual void __thiscall TitleState::HandleEvents(void)" (?HandleEvents@TitleState@@UAEXXZ)
除了链接器找不到函数的定义之外,我不确定问题是什么。一切都是#included
正确的或声明的。任何帮助表示赞赏。谢谢。
PS 当我使用 BoostPro 安装程序时,我只安装了单线程的东西,没有安装多线程的东西。这可能是它不起作用的原因吗?我读到当库以不同的方式链接时,可能会出现链接器问题。如果这可能是一个问题,我会补充说我也在使用 SFML 库。