テンプレート クラス コンストラクターへの未定義の参照
この C コードでは、コンパイラはエラー「未定義の cola(float) への参照::」を生成します。コーラ()"。このエラーは、コンパイラがテンプレート クラス cola のコンストラクターの実装を見つけられないために発生します。
回答 1: 明示的なテンプレートのインスタンス化
1 つの解決策は、テンプレートを明示的にインスタンス化することです。 cola.cpp の最後にテンプレート クラス cola を追加し、具象ファイルを強制的にコンパイルします。
template class cola<float>; template class cola<string>;
回答 2: ヘッダー ファイルの組み込み
あるいは、テンプレート クラスの実装をヘッダー ファイル cola.h に移動することもできます。これにより、ヘッダー ファイルを含むすべての翻訳単位で実装を利用できるようになります。
ヘッダー ファイルを含める理由
実装をヘッダー ファイルに含めると、明示的なインスタンス化の場合。これにより、テンプレート クラスとそのメンバー関数がヘッダー ファイルを含むすべての翻訳単位で利用できることが保証されます。このアプローチは、コードベース全体で広く使用されているテンプレート クラスによく使用されます。
追加の注意事項:
以上がC コードで「テンプレート クラス コンストラクターへの未定義の参照」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。