[英]Friend ostream can't access private member
我見過這樣的其他問題,但我沒有得到解決方案。 這是代碼:
cout_overload.h:
#ifndef COUT_OVERLOAD_H_
#define COUT_OVERLOAD_H_
#include <iostream>
class A
{
private:
int data;
public:
A(int d);
friend std::ostream & operator <<
(std::ostream os, const A &t );
};
#endif
cout_overload_r.cpp:
#include <iostream>
#include "cout_overload.h"
A::A(int d)
{
data = d;
}
std::ostream &operator << (std::ostream &os, const A&t)
{
os << " t = " << t.data ;
return os;
}
main.cpp中:
#include <iostream> #include "cout_overload.h"
int main(void)
{
A ra(1);
using std::cout;
// cout<<ra;
return 0;
}
您需要修改您的friend
功能並使用ostream&
friend std::ostream & operator << (std::ostream os, const A &t );
並替換你的上述行,
friend std::ostream & operator << (std::ostream &os, const A &t );
因為ostream
是一個輸出流,所以&
將通過引用傳遞(將流傳遞給函數的唯一方法)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.