2011-07-23 61 views
0

我有一個非常漂亮的獲得fnc,它返回'a type'的指針。現在我想重新使用此FNC在FNC設置設置一些值,這種類型的由get返回:從r值製作l值

template<class Tag,class Type> 
set(Type t, some_value) 
{ 
get<Tag>(t) = value; 
} 

我唯一的問題是:由於得到回報指針,而不是引用的指針返回類型是一個右值,在大多數情況下是好的,但不是這樣。有沒有辦法以某種方式將返回的值更改爲左值?

+3

我錯過了什麼,或者你不能只是做* *得到(噸)=價值;'。如果這不起作用,那麼如果您將「get」的定義添加到問題中,將會有所幫助。 – Sven

+0

@Sven你應該張貼它作爲評論,所以我可以接受它。而不是+1,謝謝! – smallB

+0

不客氣。 :)我將它添加爲答案。 – Sven

回答

2

解引用指針(使用*運算符)會生成引用。引用的類型取決於指針的類型。 const T *變成const T &,而T *變成T &

所以,如果get返回一個指向非const變量,你可以寫:

*get<Tag>(t) = value; 

如果get不符合這樣的要求,你不能改變它,你就必須改爲使用set方法。

5

你可以簡單地使用:

*get<Tag>(t) = value; 

解引用指針的結果是左值。