我有一个类,其复制构造函数已被删除。当尝试遍历std::vector此类的包含对象时,我不能以“好”的方式进行操作,而必须使用某种迭代变量。
struct foo {
foo() :
val(0)
{}
foo(const foo&) = delete;
int val;
};
int main() {
std::vector<foo> fooVec(5);
for (auto f : fooVec) //C2280 - attempting to reference a deleted function!
{
std::cout << f.val << std::endl;
}
for (int i = 0; i < fooVec.size(); i++) //no problems
{
std::cout << fooVec[i].val << std::endl;
}
}
是否有一种巧妙的方法可以迭代一个不需要使用迭代变量的不可复制对象的向量?
我非常热衷于学习如何使用现代特性,并试图学习如何正确处理特殊成员函数,作为对现有代码进行现代化改造的一部分(我们仍然有原始指针)。