Node是一个非常简单的类与只是一个构造函数和几个变量:一个“名”(实际上只是一个char)和两个子节点的指针被称为“左”和“右”。
我刚开始写一些代码,需要下降到最左边的节点,我很高兴,当我来到了这一点:
Node *current = this->root;
while (true) (current->left != nullptr) ? current = current->left : break;
似乎很简单:在一个无限循环,检查,看看是否电流具有左孩子如果是这样,如果不是,设置电流到左子,跳出循环。 这是一个很酷的小的一行,不要太不可读。 (我的评论吧!)
好了,我的编译器不喜欢它:
iterator.cpp:20:70: error: expected expression
while (true) (current->left != nullptr) ? current = current->left : break;
^
1 error generated.
此外,刚刚抛出一些括号到while循环和三元运营商移动到它自己的路线并没有帮助(不出所料)。 我不得不把它变成一个的if / else编译器接受它。
有人可以解释它是如何解释的一行,为什么它的对象?