我正在尝试使用第三方C ++源代码(机器人SLAM的TORO框架,您可以通过svn使用:svn co https://www.openslam.org/data/svn/toro获取它),尝试将其封装在DLL中稍后在我的C#代码中使用。 但是,通过将源文件包含到我的项目中,我得到了各种错误。 例如,对于以下代码
void TreePoseGraph<Ops>::revertEdge(TreePoseGraph<Ops>::Edge * e){
revertEdgeInfo(e);
Vertex* ap=e->v2;
e->v2=e->v1;
e->v1=ap;
}
我收到以下错误:
错误C2182:'revertEdge':非法使用'void'类型 错误C2470:'AISNavigation :: TreePoseGraph :: revertEdge':看起来像一个函数d 定义,但没有参数列表;跳过明显的身体
错误C2072:'AISNavigation :: TreePoseGraph :: revertEdge':函数初始化
当然,我做的第一件事就是检查它是否包含在正确的标题中(revertEdge),在stdAfx.h中,当然它随处可见。 此外,IntelliSense可以识别所有内容,可以指出我所有内容的来源,因此似乎项目中没有任何内容。然而,我收到了类似的大量错误。
我确信我在开头就做了一些非常错误的事情,导致所有这些无意义错误消息的转储(好吧可能有1-2个合理,但剩下的只是平衡的结果) 。您能否提出任何可能导致获得如此大量错误消息的建议?
答案 0 :(得分:2)
只是一个猜测,但你可能需要在typename
之前TreePoseGraph<Ops>::Edge
才能告诉编译器Edge
实际上是一个类型,即
void TreePoseGraph<Ops>::revertEdge(typename TreePoseGraph<Ops>::Edge * e)
{
// ...
}
答案 1 :(得分:0)
我认为这应该是它的样子:
template<class Ops> void TreePoseGraph<Ops>::revertEdge(TreePoseGraph<Ops>::Edge * e) {
// ...
}