簡體   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