C++ 作为朋友处理运算符重载方法

C++ 作为朋友处理运算符重载方法,c++,C++,我试图创建简单类并重载它的一些运算符,但一开始就失败了,下面是我的代码: #include <iostream> class Person { char *firstName; char *lastName; int age; friend std::ostream &operator<<(std::ostream &, const Person &); public: Person() : firstNa

我试图创建简单类并重载它的一些运算符,但一开始就失败了,下面是我的代码:

#include <iostream>

class Person
{
    char *firstName;
    char *lastName;
    int age;
    friend std::ostream &operator<<(std::ostream &, const Person &);
public:
    Person() : firstName("Piotr"),  lastName("Tchaikovsky"), age(10) {}

    Person(char* f, char* l, int a)
    {
        this->firstName = f;
        this->lastName = l;
        age = a;
    }

    std::ostream &operator<<(std::ostream& out, const Person &p)
    {
        out << p.firstName << " " << p.lastName;
        return out;
    }

};

int main()
{
    Person a;

    getchar();
    getchar();
}
#包括
班主任
{
char*名字;
char*lastName;
智力年龄;
friend std::ostream&operatorlastName=l;
年龄=a;
}

std::ostream&operator您将
friend
函数声明为全局非成员函数。然后定义一个成员函数


移动
运算符的定义或检查此问题和答案:第二个
运算符我看到,这不应该是成员函数,我现在修复了它,非常感谢@cdummie如果你接受(有一个按钮)这个答案,它将不再显示为一个未回答的问题。对不起,我本来打算这么做的,但我不小心忘了。
class Person
{
    ...
    friend std::ostream &operator<<(std::ostream &, const Person &);
    ...
};

std::ostream &operator<<(std::ostream& out, const Person &p)
{
    out << p.firstName << " " << p.lastName;
    return out;
}
class Person
{
    ...
    friend std::ostream &operator<<(std::ostream &, const Person &)
    {
        out << p.firstName << " " << p.lastName;
        return out;
    }
    ...
};