c++ - 这里不允许`*this`,求解决办法

标签 c++

我想用一个成员函数来调用当前对象本身,但是报错:

error: reference to type 'const block' could not bind to an rvalue of type 'block *'
            if (otherBlks[mm].theNeighbourPolyline(this) == 1)
                                                   ^~~~
~/blockI.hpp:358:59: note: passing argument to parameter 'blockX' here
inline const int block::theNeighbourPolyline(const block& blockX) const

错误发生在我试图添加一个新的成员函数void block::bdsmooth(const vector<block>& otherBlks) .在这个成员函数中,theNeighbourPolyline(otherBlks[mm])工作正常,但是 otherBlks[mm].theNeighbourPolyline(this)好像是不允许的。

我应该怎么做才能克服这个问题?

最佳答案

this 是一个指针值,但您的函数正在寻找一个引用参数。尝试:

if (otherBlks[mm].theNeighbourPolyline(*this) == 1)

关于c++ - 这里不允许`*this`,求解决办法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22420860/

相关文章:

c++ - ROS订阅者一直阻塞回调

c++ - 将字符串转换为 char* 问题

c++ - 为什么这个 C++11 中的 Singleton 不能正常工作?

c++ - 我怎样才能找到这个数组中的最高值和最低值?

c++ - 使用qt c++检查Xml中是否存在根元素

c++ - 在 XY 点数组中找到三个 XY 点的最大面积

c++ - MFC 应用程序的退出函数在哪里?

c# - 如果模态对话框打开,Task.Factory.StartNew() 在错误的线程上运行

c++ - 通过引用传递时的指针转换

c++ - C++ 98 中的部分模板特化?