我有一个GolfCourse类头gcourse.hh,我想为>>运算符实现运算符重载。如何在文件gcourse.cc的标题之外执行此操作?也就是说,我需要将哪些“单词”指向类本身,“GolfCourse ::”对于函数来说还不够......?
gcourse.hh:
class GolfCourse {
public:
---
friend std::istream& operator>> (std::istream& in, GolfCourse& course);
gcourse.cc:
---implement operator>> here ---
答案 0 :(得分:2)
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;
}
};