[英]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);
const std::tuple<> & data
的簽名不會讓我修改元組中的任何對象。 像第 4 行代碼一樣,簽名是否只會阻止特定的 function 修改我指定為const
的引用中的那些對象?const
對象的元組是否有效或更好,以便對該元組的非const
引用只能修改內部的非const
對象? 后一種解決方案(如果有效)會更好,因為我必須將此數據傳遞給 class 中的其他幾個函數,並且是一種更持久、更通用的解決方案,而不是小心 function 簽名。 這可以。 您可以在元組const
中創建一些元素。
事實上,這就是map
pair
所做的事情:它的鍵值對是std::pair<const key_type, value_type>
類型,以防止修改鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.