1

我在OpenVDB文档中遇到了以下代码:

template<typename _RootNodeType>
class Tree: public TreeBase
{
...
    template<typename OtherTreeType>
    Tree(const OtherTreeType& other,
        const ValueType& inactiveValue,
        const ValueType& activeValue,
        TopologyCopy): // <-- this looks weird
        TreeBase(other),
        mRoot(other.root(), inactiveValue, activeValue, TopologyCopy())
    {
}

我以前看到一个参数默认为intif 没有指定类型,但这里可能是这种情况吗?TopologyCopy在下面的 2 行中被称为操作员。

上述声明是做什么/意味着什么?

编辑:接受的答案解释了正在发生的事情。解决方案是将函数称为

openvdb::Tree newTree(oldTree, inactiveValue, activeValue, TopologyCopy());
4

2 回答 2

3

这不是没有类型的论点。这是一个没有名字的论点。它的类型是TopologyCopy. 并且TopologyCopy()默认构造该类型的对象并将其传递给mRoot. 如果我不得不猜测,我会说他们可能在这里使用标签调度来在具有相同参数的不同构造函数之间进行选择。

于 2016-07-21T23:58:31.540 回答
0

TopologyCopy是一种类型,并且由于未使用参数/变量,因此不存在。

以下TopologyCopy()构造一个TopologyCopy.

于 2016-07-21T23:57:49.243 回答