• 締切済み

typedef による2重定義

typdef による2重定義 VC++ 2005 を使用してプログラムを書いています。 ある型(type1 とします)を使用したいのですが、type1 は2箇所で定義されているらしく、 コンパイル時に、   type1 : あいまいなシンボルです。    filename1.h の可能性があります : (定義1)    または filename2.dll : (定義2) というエラーが出てしまいます。 filename1.h での定義の方を使用したいのですが、どのように指定すれば良いのでしょうか? ちなみに、filename1.h をのぞいてみたところクラスで囲ってはいませんでした。 そのため classname::~ は使えないのですよね? ご存知の方、ご教示願えないでしょうか。 宜しくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

namespace なんとか { #include "filename1.h" }; でうまくいくかなぁ? 他とのからみもあるからダメかもしれないけど....

irija_bari
質問者

お礼

PC をクラッシュさせてしまい、お礼が大変遅くなってしまいました。 申し訳ありません。 これにて質問を締め切らせていただきます。 ご回答ありがとうございましたm(_ _)m

irija_bari
質問者

補足

さっそくの回答ありがとうございます。 namespace という予約語が使えるのですね。初めて知りました。 残念ながら回答いただいた内容では解決しなかったのですが、プログラムの先頭部分を 精査したところ、filename2.dll がらみで using namespace hoge2; としてあるところがあり、それをコメントアウトしたところコンパイルがとおりました! もともと、C/C++ の include などをきちんと理解していないのと、VC++ 特有の ライブラリ、さらには開発用のライブラリと頭の中でごっちゃになっている状態です。 一度きちんと include などについて理解しようと思っています。 ちなみに、 namespace hoge1 {   #include "filename1.h" }; hoge1::type1 var1; としたところ、「あいまい」エラーとともに、「type1 は hoge1 のメンバでは ありません」というエラーも出てしまいました。 追加情報などをいただけるかもしれないので、もうしばらく質問を締め切らずに 置いておきます。 問題を解決できたことを感謝します。ありがとうございます!

関連するQ&A