小编use*_*581的帖子

返回多种类型

下面的代码片段是一个游戏,编译器抱怨返回值所以我想要一些反馈如何以其他方式做这个技巧让函数根据放入的类型返回两个不同的类型但没有重载

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)

c++ feedback

4
推荐指数
1
解决办法
197
查看次数

标签 统计

c++ ×1

feedback ×1