2013-04-09 23 views
1
modes_[pos].variance = (sigmanew < 4) ? (4) : sigmanew > 5 * variance_ : sigmanew; 

我在模板類的模板化函數中有一行。該行中的尖括號被解釋爲數據類型定義,並且正在拋出錯誤。我如何解決這個問題?尖括號被解釋爲模板函數中的模板類型

錯誤是:

/(foldername)/(part_filename)_templated_impl.tpp:312:89: error: found ':' in nested-name-specifier, expected '::'

/(foldername)/(part_filename)_templated_impl.tpp:312:79: error: 'variance_' is not a class or namespace

+1

您的意思是用'?'而不是'*'?如:'sigmanew> 5? variance_:sigmanew'? – 2013-04-09 21:52:54

+1

@DavidRodríguez-dribeas看起來像。嵌套的三元運算符是可怕的。沒有括號的嵌套三元運算符表示更加糟糕。 – 2013-04-09 21:54:08

+0

@DavidRodríguez-dribeas--對於OP的問題看起來很不錯。我在答覆中添加了它作爲建議 - 感謝您的良好洞察力! – 2013-04-09 21:55:14

回答

2

我不認爲有與<>任何問題。你的三元操作符有兩個冒號。這可能是不對的。它看起來像你想的是:

modes_[pos].variance = (sigmanew < 4) ? (4) 
             : (sigmanew > 5) ? variance_ 
                 : sigmanew; 

但你輸入了錯誤的? S的一個。爲什麼不在多行上做這個操作,而不是試圖用這種方式把所有東西都塞進去?

+0

是的,我照你說的做了,現在就起作用了!謝謝。原來是一個很小的概率。我有點害怕這是一個模板問題 – navderm 2013-04-09 22:03:25