簡體   English   中英

朋友ostream無法訪問私人會員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM