'.size'的左边必须有class / struct / union

时间:2013-08-29 18:19:49

标签: c++ templates

还是不能让这个工作。请帮忙!

template <typename T>
class Container{
public:
    ...

    friend ostream& operator<<(ostream& ostr, const Container<T>& C)
    {
        for(size_t i=0; i!= data.size(); i++) // ERROR
            ostr<<data[i]<<" "; 
        return ostr;
    }

private:
    vector<T> data;
};

1 个答案:

答案 0 :(得分:4)

dataC的成员,因此应该C.data访问(请记住,您的operator<<free function而不是Container的成员{1}}):

    for(size_t i = 0; i != C.data.size(); ++i)
        ostr << C.data[i] << " ";