我有以下代码:
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/