我有一个GolfCourse类标头gcourse.hh,我想为>> operator实现操作符重载。如何在文件gcourse.cc的标头之外执行此操作?也就是说,我需要指向类本身的哪个“单词”,“ GolfCourse ::”还不足以实现功能……?
gcourse.hh:
class GolfCourse {
public:
---
friend std::istream& operator>> (std::istream& in, GolfCourse& course);
gcourse.cc:
---implement operator>> here ---
最佳答案
GolfCourse::
不正确,因为operator >>
不是GolfCourse
的成员。这是一个免费功能。您只需要写:
std::istream& operator>> (std::istream& in, GolfCourse& course)
{
//...
return in;
}
仅当您计划从
friend
访问private
或protected
成员时,才需要类定义中的GolfCourse
声明。您当然可以在类定义中提供实现:class GolfCourse {
public:
friend std::istream& operator>> (std::istream& in, GolfCourse& course)
{
//...
return in;
}
};