错误-在函数实现过程中声明与不兼容



我正试图从另一个项目中实现一个函数,在移植过程中,我在下面的文章的标题上收到了上面的错误。

我有一个文件,其中包含函数的声明。

ObjectMgr.h

class ObjectMgr
{
friend class PlayerDumpReader;
private:
ObjectMgr();
~ObjectMgr();
std::unique_ptr<PlayerInfo> _playerInfo[MAX_RACES][MAX_CLASSES];
public:
(...)
PlayerInfo const* GetPlayerInfo(uint32 race, uint32 class_) const;
(...)

ObjectMgr.cpp

/* Error on GetPlayerInfo
* E0147    declaration is incompatible with "const PlayerInfo *ObjectMgr::GetPlayerInfo(uint32 
* race, uint32 class_) const" (declared at line 756 of "D:_AZEROTHCOREAZEROTHCORE-
* WOTLKSRCSERVERGAMEGLOBALSObjectMgr.h")  game    D:_azerothcoreazerothcore- 
* wotlksrcservergameGlobalsObjectMgr.cpp  9163    
*/
PlayerInfo const* ObjectMgr::GetPlayerInfo(uint32 race, uint32 class_) const
{
if (race >= MAX_RACES)
return nullptr;
if (class_ >= MAX_CLASSES)
return nullptr;
auto const& info = ObjectMgr::_playerInfo[race][class_];
if (!info)
return nullptr;
return info->get();
}

这真的让我很困惑,因为我确实导入了头文件,并且名称和类型完全相同。可能是因为我在上有另一个错误吗info->get()

这确实是一个返回类型的问题。通过将类型更改为:解决

PlayerInfo* _playerInfo[MAX_RACES][MAX_CLASSES];

PlayerInfo* info = _playerInfo[race][class_];

最新更新