0

オープンソースのVC++コードを使用しようとしています。悪夢になってしまった既存のVC++ソリューションに新しいプロジェクトを追加しようとしています。私が直面している問題の1つは、「タイプの再定義」エラーを修正することです。すでにいくつか修正しましたが、今は他のいくつかで立ち往生しています。コードベースは巨大なので、スニッペストはありません...

私の質問は、これらのエラーを追跡するための「ベストプラクティス」はありますか?

ありがとう。

4

3 に答える 3

2

タイプの再定義により、ワークスペースプロジェクトで同じ名前のclassesまたはtypedefsが定義されており、コンパイル中に問題が発生していると思います(複数定義のリンカーエラーと混同しないでください)。

namespaceベストプラクティスは、常にそれらをモジュールまたはプロジェクトベースで囲むことです。
例えば

// project1.h
namespace project1 {
  class X {};
}

// project2.h
namespace project2 {
  class X {};
}
于 2012-06-07T05:53:57.180 に答える
1

私のアドバイスは、すべてのコードを別々のプロジェクトの別々の名前空間に配置することです。そうすれば、衝突を心配する必要はありません。大量のヘッダー ファイルとソース ファイルがある場合は大変な作業になるかもしれませんが、長い目で見れば価値があるかもしれません。

また、名前空間をすべての関数/クラスに追加する必要はありませんnamespace foo {。すべてのヘッダー/ソース ファイルの上部に追加し、対応する}を下部に追加するだけです。

于 2012-06-07T05:56:48.157 に答える
0

A が B を呼び出し、B が C を呼び出すなど、2 つ以上の異なるプログラムに同じヘッダー ファイルをインクルードしようとすると、A と B の両方に C をインクルードすると、この種のエラーが発生します。同じことが私にも起こり、解決しました。

于 2013-01-15T17:25:37.670 に答える