もっと良いコンパイラがあることはわかっていますが、私は vc6 を使い続けることを好みました。
問題のコンパイラは次のとおりであることに注意してください:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
(リンカなどは関係ないので、この質問には関係していないようです)
std::vector から継承するクラスを宣言しようとしましたが、2 番目のテンプレート パラメーターを具体的に定義しようとしない限り、正常に動作します。
10: class foo : public std::vector<LPTSTR,std::allocator<LPTSTR>>
11: {
12: public:
13: foo();
14: ~foo();
15: };
はコンパイルされず、次のエラーが発生します: c:\foo\foo.h(10) : エラー C2143: 構文エラー: '{' の前に '>' がありません
さて、本当の問題は、なぜこれが合法なのかということです:
10: class foo : public std::vector<LPTSTR,std::allocator<LPTSTR>>>
11: {
12: public:
13: foo();
14: ~foo();
15: };
10行目の最後の余分な部分に注意してください>
...そして私が知りたいのは:
- 私は何か間違ったことをしましたか?
- これは私のインストールでのみ発生しますか?
- 後で何らかの問題が発生する可能性があるため、回避策を控えるべきですか?
私はこれを可能な限り調査しようとしましたが、ほとんどのプログラマーはオンラインで検索するのがそれほど簡単ではないことを知っています。なぜなら、検索エンジンは正規表現検索さえなければ、ヒットまたはミスおよび/または人気コンテストになるからです。グーグルなどでランクアップするほど人気の話題です)。
この件に関する迅速な(または迅速でなくても)返信をいただき、誠にありがとうございます。私は他人の質問に答えるのがとてつもなく簡単に思えても、答えようとし、知識は常に知識不足から始まることを忘れないようにしています。