对于那些经验丰富的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