1

サードパーティのC++ソースコード(ロボットSLAM用のTOROフレームワーク、svn co https://www.openslam.org/data/svn/toroを使用してsvn経由で取得できます)を使用しようとしています。後でC#コードで使用するためにDLLにカプセル化します。ただし、ソースファイルをプロジェクトに含めるだけでさまざまなエラーが発生します。たとえば、次のコードの場合

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 :: reverseEdge':関数d定義のように見えますが、パラメーターリストがありません。見かけのボディ
エラーをスキップするC2072:'AISNavigation :: TreePoseGraph :: reverseEdge':関数の初期化

もちろん、私が最初にしたことは、それが正しいヘッダーに含まれているかどうか(revertEdge)、そしてstdAfx.hに含まれているかどうか、そしてもちろんどこにでも存在しているかどうかを確認することでした。さらに、IntelliSenseはすべてを認識し、すべてのソースを示すことができるため、プロジェクトに欠けているものは何もないようです。それでも、私は同様の種類のエラーを大量に受け取ります。

私はここで最初に何か非常に間違ったことをしていると確信しています。これにより、ナンセンスなエラーメッセージがすべてダンプされます(妥当なものが1〜2個あるかもしれませんが、残りはアバランスの結果です)。このような膨大なエラーメッセージのセットが表示される結果となる可能性のある提案を教えてください。

4

2 に答える 2

2

単なる推測ですが、コンパイラに実際に型であるかどうかを伝えるために、のtypename前にが必要な場合があります。TreePoseGraph<Ops>::EdgeEdge

void TreePoseGraph<Ops>::revertEdge(typename TreePoseGraph<Ops>::Edge * e)
{
    // ...
}
于 2013-03-12T17:46:36.170 に答える
0

私はこれがどのように見えるべきかだと思います:

template<class Ops> void TreePoseGraph<Ops>::revertEdge(TreePoseGraph<Ops>::Edge * e) {
  // ...
}
于 2013-03-12T17:48:03.243 に答える