创建新对象并立即在其上设置属性时编译器错误

时间:2018-05-23 07:56:11

标签: c++

我有以下代码

Parameters[FilterMorph] = new KnobCtr(processorEditor)->SetId("FilterMorph")->SetBounds(100, 100)->AddAttachment();

错误消息是:

Error   C2143   syntax error: missing ';' before '->'   

但如果我这样做

KnobCtr * ctr = new KnobCtr(processorEditor);
Parameters[FilterMorph] = ctr->SetId("FilterMorph")->SetBounds(100, 100)->AddAttachment();
一切都很好 为什么会这样呢?

参数是指针映射

1 个答案:

答案 0 :(得分:6)

这是因为operator precedence,您需要在new周围添加一个括号:

Parameters[FilterMorph] = (new KnobCtr(processorEditor))->SetId("FilterMorph")->SetBounds(100, 100)->AddAttachment();