cannot call pointer method postOrder on myTreeNode
来源:4-3 扩展已有类型

杰瑞大杰瑞
2020-10-09
这个编译错误老师可详细再解释下吗?
视频里面没有听太懂,为什么必须返回一个变量才可以取到函数地址?
另外和指针接收和值接收又有什么关系呢?(修改成值接收就不会报错)
写回答
1回答
-
这个就是编译器的限制。
我们这个postOrder需要一个指针接收者。如果是修改后的写成left.postOrder(),left是一个变量,它会自动取left的地址,作为接收者。但是我们不写变量,myTreeNode{...}.postOrder(),它就取不了myTreeNode{...}的地址。这只是一个编译器的限制。
指针接收者和值接收者,区别与指针参数与值参数一样。只是编译器在处理left.postOrder()等的时候,会帮我们自动把left取地址,然后再调用postOrder。
112020-10-11
相似问题