我有一個非常漂亮的獲得fnc,它返回'a type'的指針。現在我想重新使用此FNC在FNC設置設置一些值,這種類型的由get返回:從r值製作l值
template<class Tag,class Type>
set(Type t, some_value)
{
get<Tag>(t) = value;
}
我唯一的問題是:由於得到回報指針,而不是引用的指針返回類型是一個右值,在大多數情況下是好的,但不是這樣。有沒有辦法以某種方式將返回的值更改爲左值?
我有一個非常漂亮的獲得fnc,它返回'a type'的指針。現在我想重新使用此FNC在FNC設置設置一些值,這種類型的由get返回:從r值製作l值
template<class Tag,class Type>
set(Type t, some_value)
{
get<Tag>(t) = value;
}
我唯一的問題是:由於得到回報指針,而不是引用的指針返回類型是一個右值,在大多數情況下是好的,但不是這樣。有沒有辦法以某種方式將返回的值更改爲左值?
解引用指針(使用*
運算符)會生成引用。引用的類型取決於指針的類型。 const T *
變成const T &
,而T *
變成T &
。
所以,如果get
返回一個指向非const
變量,你可以寫:
*get<Tag>(t) = value;
如果get
不符合這樣的要求,你不能改變它,你就必須改爲使用set
方法。
你可以簡單地使用:
*get<Tag>(t) = value;
解引用指針的結果是左值。
我錯過了什麼,或者你不能只是做* *得到(噸)=價值;'。如果這不起作用,那麼如果您將「get」的定義添加到問題中,將會有所幫助。 –
Sven
@Sven你應該張貼它作爲評論,所以我可以接受它。而不是+1,謝謝! – smallB
不客氣。 :)我將它添加爲答案。 – Sven