对于那些经验丰富的 C++ 编码人员来说,这似乎是一个愚蠢的问题,但我认为一旦你有了一个类并创建了该类的对象,你就可以使用你创建的对象调用该类的公共(public)方法 (除非它是静态方法,在这种情况下,您可以使用对象或类名本身来调用它)?
那为什么会这样呢?
函数定义:
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);
我在这里错过了什么?程序的其余部分如何知道 printList()
属于类List<int>
除非我调用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();
最佳答案
这里是瞎拍的,但是你是不是希望下面的函数是T
的成员函数?
void print(const T& someT);
因为它不是。它只是一个接受 T
的免费函数。
下面是一个类定义和成员函数声明(虽然成员函数很傻,因为它接受一个可能完全多余的参数):
struct T {
void print(const T& someT);
};
下面是同一个愚蠢的成员函数,定义为外联:
void T::print(const T& someT) {
// ...
}
从你的问题中不能完全清楚你在这里真正做的是哪一个,但第一个绝对不是成员函数。
关于c++ - 在不使用对象的情况下调用类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538801/