我在MyClass上有以下c ++函数:
class MyClass {
public:
std::vector<MyObject*> getVector();
};
我想确保抓取此集合的对象不会修改集合或内容。什么是适当的c ++ const
用法来实现这个目标?
编辑:按“内容”我指的是指针及其指向的内容。
答案 0 :(得分:3)
std::vector<const MyObject *> getVector();
或
const std::vector<const MyObject *> &getVector();
应该做的伎俩。 你不需要指针是常量,只需要它们指向的MyObject实例和std :: vector对象(如果返回引用),所以向量不会改变它的状态,任何引用的项都不会暴露为非常数。
答案 1 :(得分:1)
在旁注中,std::vector<MyObject*> getVector()
将返回该向量的副本,就OOP原则(封装)而言,这是一种理想的行为:
对此getter的调用将不允许改变MyClass实例的状态。
当然,性能很差,设计很差,你实际上需要返回一个副本(相当奇怪的getter规范)。这就是为什么你应该返回一个引用const对象的原因,同时它允许返回对象本身(没有复制),同时禁止它的变异。
答案 2 :(得分:0)
不确定是否正确。我只是用
lstPendientes = await (from item in db.erProcesaReenvio
group item by new
{
item.iderRegistroCredito,
item.cuentaClabe,
item.nombreCliente,
item.idCtaProcesar,
item.No_Cuenta,
item.afiliado,
item.ImporteCobrar
} into g
select new {
prop1 = g.iderRegistroCredito,
prop2 = g.cuentaClabe
});
完成任务。