重载运算符时,如何从实现文件访问头文件中<<数组?

How do I access an array in my header file from my implementation file when overloading << operator?

本文关键字:lt 文件 运算符 数组 实现 重载 访问      更新时间:2023-10-16

如果我去掉输出data[]内容的那一行,它可以很好地编译。我似乎有困难理解通过实现文件访问数组。如有任何帮助,不胜感激。

实现文件功能:

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

错误信息:错误:期望的主表达式在'。"令牌|

data不是静态变量,因此可以直接与类名一起使用。类的每个实例的数据是不同的。使用以下代码:

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;
}