アプリ版:「スタンプのみでお礼する」機能のリリースについて

typdef による2重定義

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

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

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

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

A 回答 (1件)

namespace なんとか {


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

この回答への補足

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

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/15 18:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!