我正试图从另一个项目中实现一个函数,在移植过程中,我在下面的文章的标题上收到了上面的错误。
我有一个文件,其中包含函数的声明。
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_];