在构建" OpenSubdiv"时,错误重载具有类似的转换。

时间:2015-05-17 01:39:39

标签: c++ 3d type-conversion overloading

在构建[OpenSubdiv](http://graphics.pixar.com/opensubdiv/docs/cmake_build.html)时遇到以下错误:

error C2666: 'OpenSubdiv::v3_0_0_beta::Vtr::internal::StackBuffer<TYPE,SIZE>::operator []' : 4 overloads have similar conversions

触发错误的代码行是:

            for (int i = 0; i < pVertEdges.size(); ++i) {
            cVertEdgeBuffer[i] = _refinement.getEdgeChildEdges(pVertEdges[i])[pVertInEdge[i]];
        }

实例是:

internal::StackBuffer<Index,16> cVertEdgeBuffer(_childLevel._maxValence);

StackBuffer类中的重载operator []似乎有些含糊不清

template <typename TYPE, unsigned int SIZE>
class StackBuffer
{
StackBuffer();
StackBuffer(size_type size);
~StackBuffer();

public:
TYPE &       operator[](size_type index)        { return _data[index]; }
TYPE const & operator[](size_type index) const  { return _data[index]; }

operator TYPE const * () const { return _data; }
operator TYPE *       ()       { return _data; }
};

我将编译从VS2012更改为VS2010,但错误仍然存​​在。

这个错误是由于OpenSubdiv的来源还是由于我的Cmake配置?我按照OpenSubdiv的要求添加了所有依赖项。

1 个答案:

答案 0 :(得分:1)