c++ - 无法使用自定义结构的属性

标签 c++ struct header

我的标题中有一个这样定义的结构:

struct AABB2 {
    Float xMin, xMax, yMin, yMax;
    AABB2(Float xMin_ = Float(0.0f), Float xMax_ = Float(0.0f), Float yMin_ = Float(0.0f), Float yMax_ = Float(0.0f)) :
        xMin(xMin_), xMax(xMax_), yMin(yMin_), yMax(yMax_) {}
};

在 cpp 文件中我有这样的函数:

编辑: 对不起,我第一次发布错误的功能!

AABB2 combineAABB(const AABB2 &aabb1, const AABB2 &aabb2) {
    AABB2 aabb;
    aabb.xMin = std::min(aabb1.xMin, aabb2.xMin);
    aabb.xMax = std::max(aabb1.xMax, aabb2.xMax);
    aabb.yMin = std::min(aabb1.yMin, aabb2.yMin);
    aabb.yMax = std::max(aabb1.yMax, aabb2.yMax);
    return aabb;
}

AABB2 combineAABB(const AABB2 &aabb1, const AABB2 &aabb2, const AABB2 &aabb3, const AABB2 &aabb4) {
    AABB2 aabbA = combineAABB(aabb1, aabb2);
    AABB2 aabbB = combineAABB(aabb3, aabb4);
    return combineAABB(aabbA, aabbB);
}


// the call to the combine function

 vector<AABB2> &angularBBRow = angularBBLayer[i];

for (int j = 0; j < currentWidth; j++) {
                AABB2 aabb1 = angularBB[currentLayer - 1][i * 2 + 0][j * 2 + 0];
                AABB2 aabb2 = angularBB[currentLayer - 1][i * 2 + 1][j * 2 + 0];
                AABB2 aabb3 = angularBB[currentLayer - 1][i * 2 + 1][j * 2 + 1];
                AABB2 aabb4 = angularBB[currentLayer - 1][i * 2 + 0][j * 2 + 1];

        angularBBRow.push_back(combineAABB(aabb1, aabb2, aabb3, aabb4));
}


但出于某种原因,为什么我尝试调用此函数以实际使用它,我收到一条错误消息,内容为 error: ‘mitsuba::AABB2’ has no member named ‘xMin’

额外信息:

mitsuba 是一个渲染引擎,我正尝试在其中实现它,这就是它出现在错误消息中的原因。

知道为什么会这样吗?

最佳答案

三菱渲染引擎为 AABB2 定义了自己的类型:

typedef TAABB<Point2> AABB2

很明显,错误消息指的是这种类型,它存在于 mitsuba 命名空间中。当编译器尝试解析 AABB2 的类型时,它会选择 mitsuba 的版本,而不是你的。

虽然我们努力请求您没有显示足够的代码,但您很可能正在执行以下操作之一:

  • 忘记包含定义 AABB2 的标题
  • 通过 using namespace mitsuba;
  • 等调用导入整个 mitsuba 命名空间
  • 在您自己的命名空间中定义 AABB2 并忘记在您的类型中指定

您可以通过解决这些问题来很好地解决问题。或者,您可以尝试将您的结构重命名为 mitsuba 未使用的名称。

关于c++ - 无法使用自定义结构的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105250/

相关文章:

c - 非标准类型的 MPI 分布式读取

c - 使用qsort整理struct的vec(C)

c - 打包和非打包结构的内存布局

hadoop - 如何在不使用getmerge的情况下将头文件作为第一行插入HDFS的数据文件中(复制到本地时性能问题)?

file - 我是否在某处读到过 C++/CLI 让我们走向一个 "header-file"更少的社会,比如 Java

c++ - 为什么在返回右值引用时给出 C++ 编译器警告?

C++ 元编程 : Generating a byte sequence based on type/value input?

php - 使用 php 下载 xlsx 文件

C++ 对指向结构的 const 指针数组进行排序

C++20:非类型模板参数中的非捕获 lambda