みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

typedef による2重定義

typdef による2重定義

VC++ 2005 を使用してプログラムを書いています。
ある型(type1 とします)を使用したいのですが、type1 は2箇所で定義されているらしく、
コンパイル時に、
  type1 : あいまいなシンボルです。
   filename1.h の可能性があります : (定義1)
   または filename2.dll : (定義2)
というエラーが出てしまいます。

filename1.h での定義の方を使用したいのですが、どのように指定すれば良いのでしょうか?

ちなみに、filename1.h をのぞいてみたところクラスで囲ってはいませんでした。
そのため classname::~ は使えないのですよね?

ご存知の方、ご教示願えないでしょうか。
宜しくお願いいたします。

投稿日時 - 2008-03-07 09:06:54

QNo.3840190

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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

投稿日時 - 2008-03-07 13:20:15

補足

さっそくの回答ありがとうございます。

namespace という予約語が使えるのですね。初めて知りました。
残念ながら回答いただいた内容では解決しなかったのですが、プログラムの先頭部分を
精査したところ、filename2.dll がらみで

using namespace hoge2;

としてあるところがあり、それをコメントアウトしたところコンパイルがとおりました!

もともと、C/C++ の include などをきちんと理解していないのと、VC++ 特有の
ライブラリ、さらには開発用のライブラリと頭の中でごっちゃになっている状態です。
一度きちんと include などについて理解しようと思っています。

ちなみに、

namespace hoge1 {
  #include "filename1.h"
};

hoge1::type1 var1;

としたところ、「あいまい」エラーとともに、「type1 は hoge1 のメンバでは
ありません」というエラーも出てしまいました。

追加情報などをいただけるかもしれないので、もうしばらく質問を締め切らずに
置いておきます。
問題を解決できたことを感謝します。ありがとうございます!

投稿日時 - 2008-03-07 13:47:53

お礼

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

投稿日時 - 2008-03-15 18:59:08

あなたにオススメの質問