c++ - 在迭代 vector 的 for 循环中无效使用非静态数据成员

标签 c++ vector

我有以下代码:

template
<typename T>
class NumberContainer{
    public:
        NumberContainer(std::initializer_list<T> contents):contents_(contents){};
        ~NumberContainer(){};
        template <typename U>
        friend std::ostream& operator<<(std::ostream& out,const NumberContainer<U>& obj){
            for(auto it=contents_.begin(); it!=contents_.end(); ++it)
                out << *it << " ";
            return out;
        }
    private:
        std::vector<T> contents_;
};

当我尝试编译它时,gcc 提示 for 循环说 invalid use of nonstatit data member contents_ 。是因为在编译时不知道 vector 的大小吗?我该如何解决它以迭代 vector ?

最佳答案

友元函数不是成员,所以没有this让你直接访问非静态成员。相反,您访问函数参数的成员,例如 obj.contents_

关于c++ - 在迭代 vector 的 for 循环中无效使用非静态数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21696524/

相关文章:

c++ - 返回成员变量时,为什么在函数内外得到不同的结果?

c++ - 大小为 10 的 vector 的测试用例失败

c++ - 边的顺序在 union 查找中重要吗?

c++ - typedef 的使用无效?

c++ -::std::remove_cv<> 应该适用于函数类型吗?

c++ - 在 QSharedMemory 中存储数据

android - 如何提高android中的OpenCV人脸检测性能?

java - 在哪里可以找到 Java 中的 Vector 和 Hashtable 文档?

css - Openlayers Feature.Vector 只使用默认样式

c++ - 在 C++ 中存储和访问 N 维位数组中单个位的最快方法是什么?