2017-07-18 77 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