다음 코드 스 니펫은 게임입니다. 컴파일러는 반환 값에 대해 불평하고 있습니다. 그래서이 트릭을 사용하여 함수가 두 가지 유형을 넣는 방법에 대한 피드백을 받고 싶습니다.복수형 반환
return stringOutput ? "never" : sObjectMgr->FindCreature(Guid)->GetCreatureData()->spawntimesecs;
?:
오퍼레이터가 expressio는하지만 에러 error C2059: syntax error : 'return'
대하여
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/3600;
uint64 days = seconds/86400;
ostringstream ss;
if(days)
days != 1 ? ss << days << " Days " : ss << days << " Day ";
if(hours)
hours != 1 ? ss << hours << " Hours" : ss << hours << " Hour";
if(minutes)
minutes != 1 ? ss << minutes << " Minutes " : ss << minutes << " Minutes ";
if(secs || (!days && !hours && !minutes))
secs != 1 ? ss << secs << " Seconds " : ss << secs << " Second ";
ss << "ago";
return ss.str();
}
무엇이 오류입니까? –
오류 C2059 : 구문 오류 : 'return' – user2373581
컴파일러가 옳은 것처럼 들리지만 잘못된 작업을하려고합니다. 당신이 정확히 무엇을 달성하려고하는지 설명을 추가 할 수 있습니까? – Elazar