對於那些經驗豐富的C++編程人員來說,這可能看起來像一個愚蠢的問題,但我認爲一旦你有一個類並且創建了該類的一個對象,就可以使用你創建的對象調用該類的公共方法(除非它是一種靜態方法,在這種情況下,您可以使用對象或類名稱本身來調用它)?不使用對象調用類方法?
那麼爲什麼這個工作?
函數定義:
template <typename Object>
void printList(const List<Object>& theList) {
if (theList.isEmpty())
cout << "Empty list!" << endl;
else {
ListItr<Object> itr = theList.first();
for(; !itr.isPastEnd(); itr.advance())
cout << itr.retrieve() << " ";
}
cout << endl;
}
函數調用:
printList(myList);
缺少什麼我在這裏?除非我使用List<int>
的對象調用printList()
,否則程序的其餘部分如何知道printList()
屬於List<int>
類?
順便說一句,我剛剛查過。我會用這種方式調用和定義函數。請注意,這次函數是使用this
指針定義的,這是我認爲它可行的方式。
函數定義:
template <typename Object>
void List<Object>::printList() {
if(this->isEmpty())
cout << "Empty list!" << endl;
else {
ListItr<Object> itr = this->first();
for(; !itr.isPastEnd(); itr.advance())
cout << itr.retrieve() << " ";
}
cout << endl;
}
函數調用:
myList.printList();
'程序的其餘部分如何知道printList()屬於班級列表'是嗎?爲什麼需要'List '作爲參數,然後呢?在我看來,你創建了一個免費函數,而不是一個成員函數...尤其是當你在第二個例子中創建一個成員函數時,你使用'List
因爲......那是*不是*類中的方法。這是一個簡單的功能。 – 2012-03-02 18:58:31
謝謝 - 我解決了這個問題,並使第一個成員函數;現在它需要能夠被調用的對象。仍然似乎很奇怪,爲什麼它需要的對象也作爲參數傳遞時,可以使用'this'來完成。 – Ambidextrous 2012-03-02 19:02:58