次のコードは、不可解なMSVC++コンパイラのエラーに責任がある:MSVC++コンパイラエラーC2143
template<class T> class Vec : public vector<T>{
public:
Vec() : vector<T>(){}
Vec(int s) : vector<T>(s){}
T& operator[](int i){return at(i); }
const T& operator[](int i)const{ return at(i);}
};
...
エラー:
test.cpp(5) : error C2143: syntax error : missing ',' before '<'
test.cpp(12) : see reference to class template instantiation 'Vec<T>' being compiled
が、私はこれをどのように修正すればよいですか?
---編集---
いくつかのコンテキスト:
私は基本的にコピーして、C++プログラミング言語から貼り付けコードをコンパイルしようとしています。私はまだこのコードを完全に理解していません。ただし、不正な値を返すのではなく、ベクトルの範囲外の項目にアクセスしようとすると、例外をスローするベクタータイプを実装することが目的です。
Vecのインスタンス化をお願いします – bayda
あなたのクラスはかなり無意味です。デフォルトでは、MSVCの演算子[]もat()と同様に境界チェックを実行します。実際にクラスに新しいものを追加するのではなく、潜在的なエラーを導入するだけです(JaredParの答えを参照)。 – jalf