考虑以下类成员:
std::vector<sim_mob::Lane *> IncomingLanes_;
如果我的 Lane 对象,上述容器应存储指向某些对象的指针。我不希望使用此变量作为参数的子程序能够修改 Lane 对象。同时,我不知道在哪里放置不会阻止我填充容器的 'const' 关键字。
你能帮我解决这个问题吗?
谢谢你,问候瓦希德
编辑: 根据我到目前为止得到的答案(非常感谢他们)假设这个样本:
#include <vector>
#include<iostream>
using namespace std;
class Lane
{
private:
int a;
public:
Lane(int h):a(h){}
void setA(int a_)
{
a=a_;
}
void printLane()
{
std::cout << a << std::endl;
}
};
class B
{
public:
vector< Lane const *> IncomingLanes;
void addLane(Lane *l)
{
IncomingLanes.push_back(l);
}
};
int main()
{
Lane l1(1);
Lane l2(2);
B b;
b.addLane(&l1);
b.addLane(&l2);
b.IncomingLanes.at(1)->printLane();
b.IncomingLanes.at(1)->setA(12);
return 1;
}
我的意思是:
b.IncomingLanes.at(1)->printLane()
应该可以毫无问题地在 IncomingLanes 上工作并且
b.IncomingLanes.at(1)->setA(12)
不应该被允许。(在上面的例子中,提到的两种方法都不起作用!)
除了解决问题,我还寻求良好的编程实践。因此,如果您认为上述问题有解决方案但方法不好,请告诉我们。谢谢你