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

解決


いな  2006-09-06 01:22:26  No: 62919

お世話になります。
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-06 01:25:36  No: 62920

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


Blue  2006-09-06 01:32:03  No: 62921

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

>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-06 02:44:44  No: 62922

>> Blue様

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

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

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

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

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

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


Blue  2006-09-06 02:50:20  No: 62923

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

#include <vector>
#include <map>

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


いな  2006-09-06 03:14:00  No: 62924

>> Blue様

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

#include <vector>
#include <map>

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


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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加