我有一个使用结构的类,我想重载该结构的 << 运算符,但仅限于类内:
typedef struct my_struct_t {
int a;
char c;
} my_struct;
class My_Class
{
public:
My_Class();
friend ostream& operator<< (ostream& os, my_struct m);
}
只有当我用 friend 关键字声明 operator<< 重载时,我才能编译,但随后运算符在我的代码中到处都被重载,而不仅仅是在类中。如何仅在类中重载 my_struct 的 << 运算符?
编辑:我想使用重载运算符打印一个 my_struct,它是 My_Class 的成员
最佳答案
不要使用运算符<<。使用命名成员函数,并将其设为私有(private)。
class My_Class
{
public:
My_Class();
private:
void Print( ostream & os, const my_struct & m );
};
请注意,无论您使用哪种方法,您都应该将结构作为常量引用传递。
编辑:没有必要让运算符 << 成为类的成员,这样您就可以使用它来打印类的成员。您可以使它成为该结构的友元,或成为该类随后使用的完全自由的函数。
关于c++ - 在 C++ 的类中重载运算符 <<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1200475/