gpt4 book ai didi

c++ - 将 const vector 传递给方法但更改指向的值

转载 作者:搜寻专家 更新时间:2023-10-31 00:05:34 31 4
gpt4 key购买 nike

我有以下代码(为简洁起见只显示相关部分 - 如果我太简短请告诉我):

class my_class
{
public:
my_class() {m_i=0;}
set(int i) {m_i = i;}
private:
int m_i;
}

void CallMod()
{
// create a bunch of my_class* o = new my_class() and store in vector<my_class*>
// vObject (left out for brevity)
Mod(vObject);
// will vObject contain pointers to objects that have m_i == 2
}

void Mod(vector<my_class*> const & vObject)
{
BOOST_FOREACH(my_class o, vObject)
{
o->set(2);
}
}

这是否意味着当 vObject 是 const 时,调用 o->set(2) 所做的修改将在 Mod 返回后保留?这是否表明“const”限定符不允许对 vObject(即 vector )进行修改操作,但允许对包含的指向 my_class 的指针进行修改?

我的理解对吗?回答这个问题的任何重复问题 - 我找不到一个 - 非常感谢链接。

最佳答案

vector 将是常量。您只能从中获取 const_iterators。您不能修改它或它的元素。

容器中的元素将是常量指针。不幸的是,const 指针并不意味着它指向的元素是 const,只是指针的值不能改变。

如果你有一个 vector<my_class>而不是 vector<my_class*> ,您将无法修改 const vector 内的 my_class 对象(除非您显然放弃了 const-ness)。

关于c++ - 将 const vector<pointers> 传递给方法但更改指向的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075957/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com