繁体   English   中英

如何制作不同常量的元组?

[英]How to make tuple of differing const-ness?

我有一个 function 返回一个元组内的几个对象。

return std::tuple<std::vector<float>, class1, class2> (vec, instance1, instance2);

我将此元组输入另一个带有签名的 function :

void func(std::tuple<std::vector<float>, class1, class2> & data);

我想修改class1 ,但不想修改元组中的任何其他对象。 我试过回来,

return std::tuple<const std::vector<float>, class1, const class2> (vec, instance1, instance2);

并修改签名。

void func(std::tuple<const std::vector<float>, class1, const class2> & data);
  1. 显然, const std::tuple<> & data的签名不会让我修改元组中的任何对象。 像第 4 行代码一样,签名是否只会阻止特定的 function 修改我指定为const的引用中的那些对象?
  2. 或者,返回具有const对象的元组是否有效或更好,以便对该元组的非const引用只能修改内部的非const对象? 后一种解决方案(如果有效)会更好,因为我必须将此数据传递给 class 中的其他几个函数,并且是一种更持久、更通用的解决方案,而不是小心 function 签名。

这可以。 您可以在元组const中创建一些元素。

事实上,这就是map pair所做的事情:它的键值对是std::pair<const key_type, value_type>类型,以防止修改键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM