下面的代码片段是一个游戏,编译器抱怨返回值所以我想要一些反馈如何以其他方式做这个技巧让函数根据放入的类型返回两个不同的类型但没有重载
template <typename T>
T GetTimeDead(uint64 Guid)
{
bool stringOutput;
if(typeid(T) == typeid(float))
stringOutput = false;
else
stringOutput = true;
bool found = false;
for(map<uint32, TrackInfo>::iterator itr = dieTracker.begin(); itr != dieTracker.end(); ++itr)
{
if(itr->second.GUID == Guid)
{
found = true;
break;
}
}
if(!found)
stringOutput ? return "never" : return sObjectMgr->FindCreature(Guid)->GetCreatureData()->spawntimesecs;
if(!stringOutput)
return dieTracker.find(Guid)->second.seconds;
float seconds = dieTracker.find(Guid)->second.seconds;
uint64 secs = seconds % 60;
uint64 minutes = seconds % 3600 / 60;
uint64 hours = seconds % 86400 / …Run Code Online (Sandbox Code Playgroud)