我在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())
{
}
我以前看到过,如果没有指定类型,参数默认为int
,但这里会是这种情况吗?CCD_ 2在下面2行被调用作为运算符。
上述声明是什么意思?
编辑:公认的答案解释了正在发生的事情。解决方案是将函数调用为
openvdb::Tree newTree(oldTree, inactiveValue, activeValue, TopologyCopy());
它不是一个没有类型的参数。这是一个没有名字的论点。其类型为TopologyCopy
。默认情况下,TopologyCopy()
构造该类型的对象并将其传递给mRoot
的构造函数。如果非要我猜测的话,我会说他们可能在这里使用标记调度来在具有相同参数的不同构造函数之间进行选择。
TopologyCopy
是一个类型,由于未使用参数/变量,因此它不存在。
下面的CCD_ 7构建一个CCD_。