vector型のデータを、mapの値に設定するには?

解決


いな  2006-09-05 16:22:26  No: 62919  IP: 192.*.*.*

お世話になります。
VC++6.0/XPで開発しております。

std::vectorのオブジェクトを、std::mapの値として
扱いたいのですが、コンパイルエラーが出ます。

struct sTest {
    char * no;
    int number;
};

typedef std::vector<sTest>  VCT_;
typedef std::map<char *, VCT_> MAP_;        VCT_PTN_VAL;

MAP_  error;  ←この宣言でエラーが出ます。
               上記typedefだけの場合は、コンパイルは通ります。

エラーの内容は、コンパイル内部エラーのようで
意味を理解できないほど大量に出ます。

何が悪いのか、お分かりになる方
いらっしゃいましたら、教えて頂けませんでしょうか。
宜しくお願い致します。

編集 削除
Blue  2006-09-05 16:25:36  No: 62920  IP: 192.*.*.*

>エラーの内容は、コンパイル内部エラーのようで
>意味を理解できないほど大量に出ます。
本当にエラーですか?warningではないですか?
(VC6ではSTLをつかうと4786が仰山出る。)

編集 削除
Blue  2006-09-05 16:32:03  No: 62921  IP: 192.*.*.*

ちょっとコピペしてコンパイルしてみたところ、

>typedef std::vector<sTest>  VCT_;
に全角空白がある。

>typedef std::map<char *, VCT_> MAP_; VCT_PTN_VAL;
のVCT_PTN_VALが意味不明。

というエラーがでて、あとはwarning C4786ですね。

気になるならば、#pragmaをつかって表示(出力)しないようにするとか。

#pragma warning( disable : 4786 )


ちなみに、
>struct sTest {
>    char * no;
>    int number;
>};
>typedef std::map<char *, VCT_> MAP_; VCT_PTN_VAL;
char*型より、std::string 型の方が扱いやすいですけど、どうでしょうか?

編集 削除
いな  2006-09-05 17:44:44  No: 62922  IP: 192.*.*.*

>> Blue様

早速の回答、有難うございます。
おっしゃいますように、エラーではなく警告でした。
(あまりに大量のため、パニクってしまい、よく見ておりませんでした。申し訳ないです)

サンプルコードの意味不明箇所は、こちらの掲示板に質問する際に
書き換えた時、間違えてしまったようです。重ね重ね、ご指摘有難うございましす。

教えていただきました警告を制御するプリプロセッサ
#pragma warning( disable : 4786 )

ですが、どのあたりに記載すれば、宜しいのでしょうか。
ネットで調べましたところ、ファイルをインクルードする前に制御すべき、と書かれておりましたが
#include前に宣言しても、警告は以前のままです。

お手数ですが、ご存知でしたら、教えて頂けませんでしょうか。
宜しくお願い致します。

※std::string 初めて知りました。これから調べさせて頂きます。

編集 削除
Blue  2006-09-05 17:50:20  No: 62923  IP: 192.*.*.*

>ネットで調べましたところ、ファイルをインクルードする前に制御すべき、と書かれておりましたが
>#include前に宣言しても、警告は以前のままです。
プロジェクトの種類は何でしょうか?

#include <vector>
#include <map>

を記述しているソースの上に書いても出ますか?

編集 削除
いな  2006-09-05 18:14:00  No: 62924  IP: 192.*.*.*

>> Blue様

またまた、回答下さいまして、有難うございます。
プロジェクトは、Win32  Applicationです。

#include <vector>
#include <map>

の位置を、様々なファイルのインクルード宣言のトップに記載し(以前は最終に追加)
その先頭に警告制御文を書くと、4786 警告は表示されなくなりました。
有難うございました。


し、しかし・・。
LNK2005のエラーが出ているようです。
しかしながら、これは別の原因が考えられますので、調べてみます。

本当に、ご親切に教えて頂きまして、有難うございました。

編集 削除