2016-09-20 30 views
-2

如果我拿出輸出數據[]的內容的那一行,它編譯得很好。我似乎無法理解通過實現文件訪問數組。任何幫助將被認可。重載<<運算符時,如何從我的實現文件訪問頭文件中的數組?

實現文件功能:

ostream& operator << (ostream& output, const Bag& b1) 
    { 
     for(int i = 0; i< b1.used; i++) 
     { 
      output <<Bag.data[i]<<" "; // LINE OF ERROR 
     } 
     output<<endl; 
     return output; 
    } 

頭文件:

#ifndef BAG_H 
#define BAG_H 
#include <cstdlib> 
#include <fstream> 
namespace greg_bag{ 
    using namespace std; 


    class Bag 
    { 
    public: 
     typedef int value_type; 
     typedef std:: size_t size_type; 
     static const size_type CAPACITY = 30; 

     Bag(){used = 0;} 

     void erase(); 
     bool erase_one(const value_type& target); 
     void insert (const value_type& entry); 
     //void operator += (const bag& addend); 

     //size_type size()const {return used;} 
     //size_type count(const value_type& target) const; 

     //bag operator +(const bag& b1, const bag& b2); 
     friend ostream& operator << (ostream&, const Bag&); 


    private: 

     value_type data[CAPACITY]; 
     size_type used; 

    }; 
} 
#endif 

錯誤消息: 錯誤: '' 之前預期基本表達式令牌|

+6

它應該是'output << b1.data [i] <<「」; –

回答

0

數據不是一個靜態變量,因此您可以直接使用它的類名稱。 數據對於類的每個實例都是不同的。使用以下代碼:

ostream& operator << (ostream& output, const Bag& b1) 
{ 
    for(int i = 0; i< b1.used; i++) 
    { 
     output <<b1.data[i]<<" "; // LINE OF ERROR 
    } 
output<<endl; 
return output; 
}