对类构造函数的未定义引用

Undefined reference to class constructor

本文关键字:未定义 引用 构造函数      更新时间:2023-10-16

这是我的代码:

menuState.hpp

#ifndef MENU_STATE_HPP
#define MENU_STATE_HPP
#include "state.hpp"
#include <SFML/Graphics.hpp>
class MenuState : public State
{
    public:
        MenuState();
        static void create(StateListener* Parent, const std::string name)
        {
            MenuState* myState = new MenuState();
            myState->parent = Parent;
            Parent->manageState(name, myState);
        }
        void enter();
        void exit();
        void resume();
    private:
};
#endif // MENU_STATE_HPP

当我执行MenuState* myState = new MenuState();时,我得到了一个对构造函数的未定义引用,我不知道为什么,因为MenuState::MenuState()在类声明中位于create函数之前。

编辑:我的所有sfml函数也出现了同样的错误。

以下是确切的构建消息:http://pastebin.com/e819FhPj

我确实链接了sfml库,并在编译器的搜索目录中设置了头路径。

最好显示错误的确切文本,但我有根据的猜测是,你得到的是链接器错误,而不是编译器错误。你真的在任何地方实现了构造函数吗?我打赌你没有。

我不是一个有经验的C++开发人员,但似乎MenuState构造函数是声明的,但没有定义。替换MenuState();使用MenuState(){}应该可以修复错误。