C 構文エラーを解決する方法: 「'<' トークンの前にイニシャライザが必要です」
C プログラミングでは、さまざまなエラーが頻繁に発生します。よくあるエラーの 1 つは、「'<' トークンの前に初期化子が必要です」です。このエラーは通常、テンプレート クラスまたはテンプレート関数を使用するときに発生するため、特定の構文の詳細に注意する必要があります。この記事では、このエラーの原因とその修正方法について説明します。
まず、このエラーをよりよく理解するためにコード例を見てみましょう:
template <typename T> void PrintVector(vector<T> vec) { for (const auto& elem : vec) { cout << elem << " "; } cout << endl; } int main() { vector<int> myVector = {1, 2, 3, 4, 5}; PrintVector<int>(myVector); return 0; }
上記のコードでは、ベクトル オブジェクトを受け入れ、その要素を印刷するテンプレート関数 PrintVector を定義します。 main 関数では、整数を含むベクトル オブジェクトを作成し、それを PrintVector 関数に渡します。ただし、このコードをコンパイルしようとすると、「'<' トークンの前にイニシャライザが必要です」というエラー メッセージが表示されます。
このエラーの原因は、コンパイラが「<」記号を認識しないことです。これは、C コンパイラがデフォルトで「<」をテンプレート パラメータ リストの一部ではなく比較演算子として解釈するためです。したがって、「<」がテンプレート パラメーター リストの一部であることをコンパイラーに伝える方法が必要です。
このエラーを解決するのは非常に簡単で、テンプレート関数の後の「<」記号の前にキーワード「テンプレート」を追加するだけです。修正されたコードは次のとおりです。
template <typename T> void PrintVector(vector<T> vec) { for (const auto& elem : vec) { cout << elem << " "; } cout << endl; } int main() { vector<int> myVector = {1, 2, 3, 4, 5}; PrintVector<int>(myVector); return 0; }
ここで、「<」がテンプレート パラメータ リストの一部であることをコンパイラに伝えるために、「template」キーワードを追加しました。これにより、コンパイラはコード内のテンプレート タイプを正しく識別できるようになります。
エラーを修正した後、コードを再コンパイルすると、期待どおりの出力が得られます。これは、C 構文エラー「'<' トークンの前に初期化子が必要です」を解決する方法です。
要約すると、C プログラミングで「'<' トークンの前に初期化子が必要です」というエラー メッセージが表示された場合、テンプレートの種類が正しく指定されていないことが原因である可能性があります。このエラーは、テンプレート関数またはテンプレート クラスの前に「template」キーワードを追加し、「<」記号がテンプレート パラメーター リストの一部として正しく解釈されるようにすることで解決できます。この記事が読者のこれらの一般的な C 構文エラーの解決に役立つことを願っています。
以上がC++ 構文エラーを解決する方法: 「'<' トークンの前に初期化子が必要です」?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。