我重載以下比運營商更大的使用時:不匹配操作>與函數
bool operator > (Person & a, Person & b)
{
//firstname is a string data type
return (a.FirstName > b.FirstName);
}
,如果我有類似如下的正常工作:
Person a = myPersonA;
Person b = myPersonB;
return myPersonA > myPersonB;
然而,內我的Person
類我定義了一個Person getByID(int id)
函數,該函數返回給定ID的Person實例。如果我嘗試使用我的操作與返回的值從這個函數是這樣的:
bool whosGreater = listPeople.getById(1) > listPeople.getById(2);
我得到"Error: no match for operator >(Person&, Person&)"
,但如果我這樣做了以下正常工作:
Person a = listPeople.getById(1);
Person b = listPeople.getById(2);
bool whosGreater = a > b;
有我在這裏沒有看到的東西?在我看來,它應該工作。 PS:這是爲了作業,所以我可以真正擺脫聲明變量並賦予它們什麼函數返回並逃脫它,但我想知道發生了什麼,以便我可以學習。我嘗試過使用Google搜索,但我無法提出正確的問題。
有趣。在C#中這將工作。 C++必須明確要求你聲明返回的Person將被放置到的「box」;在C#中,該框將隱式存在,但當它不再需要時,它也會自動收集垃圾。 –
是的,我想知道同樣的事情。我可以用任何.Net語言和其他腳本語言來做到這一點。 C++是非常不同的,錯誤不像我希望的那樣具有描述性。 –