2017-07-18 63 views
0

我在C++(根)這行代碼:錯誤直方圖C++根

void TMTrackAnalyzer::beginJob(){ 
    hisStubsVsR_.insert(pair< ObjectType, TH1F* > (InputData, dirs_.at(InputData).make<TH1F>("StubsVsR","; radius (cm); No. stubs in tracker",1200,0.,120.))); 
    } 

基本上填滿的直方圖,設定直方圖,標籤和標題的範圍內。實際上,我在這個函數中填充了更多的直方圖,但爲了簡單起見,我在這裏只放一個。併爲他們每個人我得到這些錯誤:

expected primary-expression before '(' token 
    expected primary-expression before ',' token 
    expected primary-expression before ')' token 
    expected primary-expression before '>' token 
    left operand of comma operator has no effect [-Werror=unused-value] 

InputData是我要保存直方圖的目錄。有誰知道這裏有什麼問題嗎?謝謝!

+1

看看語法高亮。注意字符串是不是都是紅色的?您需要在字符串中轉義嵌套引號。 – NathanOliver

+0

你是用root編譯還是用外部編譯器(例如gcc或clang)編譯代碼?錯誤信息是否包含一個列號,以確切顯示它所抱怨的是哪個(',',',')','>'? –

+0

@NathanOliver但爲什麼會發生這種情況?我有正確的報價單數量。 – Silviu

回答

-2

您不能隨後放置兩個字符串文字,如下所示:(「str1」「str2」)。 放在一起或用逗號分隔。 你的行必須是下列之一,才能編譯:

hisStubsVsR_.insert(pair< ObjectType, TH1F* > (InputData, dirs_.at(InputData).make<TH1F>("StubsVsR","; radius (cm); No. stubs in tracker",1200,0.,120.))); 

hisStubsVsR_.insert(pair< ObjectType, TH1F* > (InputData, dirs_.at(InputData).make<TH1F>("StubsVsR","; radius (cm);", "No. stubs", "in tracker",1200,0.,120.))); 
+0

但我沒有那種方式 – Silviu

+1

@Vanderson。僅供參考,在C++中,您可以將字符串文字放在一起。 「str1」「str2」與「str1str2」相同。 – SU3

+0

有編譯器不接受它:https://stackoverflow.com/questions/20687283/string-literal-concatenation-fails-when-prefixed-string-is-adjacent-to-non-prefi – Vanderson