重载时,如何从我的实现文件中访问头文件中的数组<<运营商?

时间:2016-09-20 04:50:22

标签: c++ arrays operator-overloading

如果我取出输出数据[]内容的行,它编译得很好。我似乎无法理解通过实现文件访问数组。任何帮助都会受到赞赏。

实现文件功能:

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

错误讯息: 错误:在&#39;之前预期的primary-expression。&#39;令牌|

1 个答案:

答案 0 :(得分: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;
}