无法理解此 PCL 代码:在原始指针上调用成员方法而不使用 ->

问题描述 投票:0回答:1

我正在尝试使用 Clang 14 构建 PCL,但在尝试编译以下代码时,它在

SparseMatrix
类上失败并出现错误
member reference base type 'MatrixEntry<T> *' is not a structure or union
for (int ii=0; ii<m_ppElements[i].size(); ii++)
,其中 m_ppElements 声明为
MatrixEntry<T>** m_ppElements;

所以错误是正确的,C 风格的数组指针没有成员

size()
或者事实上任何无需运算符
->
即可访问的方法,并且
.
不可重载,也没有任何强制转换。

但是,这段代码可以在 MSVC 17 和 Clang 11 上正常构建。

有问题的代码:https://github.com/PointCloudLibrary/pcl/blob/master/surface/include/pcl/surface/3rdparty/poisson4/sparse_matrix.hpp

c++ clang point-cloud-library
1个回答
0
投票

有关信息,此问题已在此(合并的)PR 中修复https://github.com/PointCloudLibrary/pcl/pull/5256/files

© www.soinside.com 2019 - 2024. All rights reserved.