LNK2005在.hpp文件中声明函数时出错

LNK2005-Error when declaring a function in a .hpp-File

本文关键字:函数 出错 声明 hpp 文件 LNK2005      更新时间:2023-10-16

我正在构建一个程序,需要一个函数来检查鼠标是否在对象上。我编写了这个函数并创建了一个新的.hpp文件,因为我的项目中有多个文件将使用这个函数。该文件名为HitboxDetec.hpp。我在里面写的函数是这样的:

bool isClicked(sf::Sprite* Sprite, sf::RenderWindow* pW)
{
    int MOUSE_X = sf::Mouse::getPosition(*pW).x;
    int MOUSE_Y = sf::Mouse::getPosition(*pW).y;
    if (MOUSE_X >= Sprite->getPosition().x &&
        MOUSE_X <= Sprite->getPosition().x + Sprite->getPosition().x + 500 &&
        MOUSE_Y >= Sprite->getPosition().y &&
        MOUSE_Y <= Sprite->getPosition().y + Sprite->getPosition().y + 500)
    {
        return true;
    }
    else return false;
}

我包含了所需的库等,代码工作正常(我通过在.cpp文件中声明函数来测试它)

在.cpp文件中,我包含了CookieDetec.hpp-文件,并用调用它

if(isClicked(pSprite, pW)) {Stuff}

当我编译程序时,它只会给我一个LNK2005错误。我该怎么解决这个问题?

LNK2005用于:

The given symbol, displayed in its decorated form, was multiply defined.

如果您在头文件中定义了函数,那么它可能包含在多个翻译单元中。为了防止多个定义将此函数标记为内联:

inline bool isClicked(sf::Sprite* Sprite, sf::RenderWindow* pW)
^^^^^^