首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建指向MFnMesh的指针

创建指向MFnMesh的指针
EN

Stack Overflow用户
提问于 2016-06-06 09:19:55
回答 1查看 304关注 0票数 0

我正在尝试创建一个函数,接收一个指针并在其上执行操作。

问题是,我的MFnMesh 不能将转换为指针,我认为问题不仅在这个类上,而且在MFnBaseClass上,因为我得到了这个错误。

代码语言:javascript
复制
/usr/autodesk/maya2015-x64/include/maya/MFnBase.h:168:14: error: ‘MFnMesh* MFnMesh::operator&() const’ is private
   MFnClass * operator& () const
              ^
/usr/autodesk/maya2015-x64/include/maya/MFnDagNode.h:237:2: note: in expansion of macro ‘declareMinimalMFn’
  declareMinimalMFn( MFnClass );          \
  ^
/usr/autodesk/maya2015-x64/include/maya/MFnMesh.h:243:2: note: in expansion of macro ‘declareDagMFn’
  declareDagMFn(MFnMesh, MFnDagNode);
  ^
/home/k.masson/Documents/maya/km_extendedColorSet/src/km_particlesToColorSet.cpp:159:9: error: within this context
   test(&meshFn);
         ^

下面是函数测试,它位于somefile.h中,包含在调用函数的文件中。

代码语言:javascript
复制
void test(MFnMesh * meshFn){
  MStatus status = MS::kSuccess;
  MString csName("YOLOSWAQDAZD");
  status = meshFn->createColorSetDataMesh(csName);
  MCheckStatus(status,"Error creating new color set");
}

下面是我在调用test函数之前所做的工作。

代码语言:javascript
复制
// Get the out mesh data
        MDataHandle outMeshHandle = data.outputValue(aOutGeometry, &status);
        MCheckStatus(status,"ERROR getting aOutGeometry");

        // Copy the in mesh to the output
        outMeshHandle.copy(inMeshData);

        // Create a function set for the out mesh
        MFnMesh meshFn(outMeshHandle.asMesh());
        test(&meshFn);

我没有找到任何方法将我的MFnMesh转换成指针,所以我尝试直接调用它作为对象,而不是像这样的指针。

代码语言:javascript
复制
test(meshFn);

void test(MFnMesh meshFn){
  MStatus status = MS::kSuccess;
  MString csName("YOLOSWAQDAZD");
  status = meshFn.createColorSetDataMesh(csName);
  MCheckStatus(status,"Error creating new color set");
}

我明白了:

代码语言:javascript
复制
/usr/autodesk/maya2015-x64/include/maya/MFnMesh.h:243:16: error: ‘MFnMesh::MFnMesh(const MFnMesh&)’ is private
  declareDagMFn(MFnMesh, MFnDagNode);
                ^
/usr/autodesk/maya2015-x64/include/maya/MFnBase.h:166:9: note: in definition of macro ‘declareMinimalMFn’
         MFnClass( const MFnClass &rhs );                            \
         ^
/usr/autodesk/maya2015-x64/include/maya/MFnMesh.h:243:2: note: in expansion of macro ‘declareDagMFn’
  declareDagMFn(MFnMesh, MFnDagNode);
  ^
/home/k.masson/Documents/maya/km_extendedColorSet/src/km_particlesToColorSet.cpp:159:14: error: within this context
   test(meshFn);
              ^
In file included from /home/k.masson/Documents/maya/km_extendedColorSet/src/km_particlesToColorSet.cpp:29:0:
/home/k.masson/Documents/maya/km_extendedColorSet/src/kmColorSetTool.h:29:6: error:   initializing argument 1 of ‘void test(MFnMesh)’
 void test(MFnMesh meshFn){

那么,您是否知道是否要创建一个函数,该函数以一种时尚的方式对类进行操作,甚至创建一个具有MFnBase属性的类?我不知道我们不能做这样的过程,这是非常现代的。

我是c++的新手,所以我可能犯了一个愚蠢的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-06 11:01:57

MFnBaseClass不允许使用对指针的转换,相反,使用几乎相同的引用。有关详细信息,请参阅References vs. Pointers

我的函数的正确签名

代码语言:javascript
复制
void test(MFnMesh& meshFn)

使用它的方法是

代码语言:javascript
复制
test(meshFn);

要在函数中使用引用,只需将其作为常规对象使用即可。

代码语言:javascript
复制
void test(MFnMesh& meshFn){
  MStatus status = MS::kSuccess;
  MString csName("YOLOSWAQDAZD");
  status = meshFn.createColorSetDataMesh(csName);
  MCheckStatus(status,"Error creating new color set");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37653716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档