ビデオ: 【VisualStudio2012】C++でWindowsフォームアプリケーションを作る簡単な方法 2024
構造テンプレートには、特定のタイプに依存しないデータリポジトリの作成など、多くの興味深い用途があります。ここでは、StructureTemplateの例を示します。
#include using namespace std;テンプレート構造体の体積{Tの高さ; T幅; T長さ;ボリューム(){高さ= 0;幅= 0;長さ= 0;} T getvolume(){戻り高*幅*長さ;} T getvolume(T H、T W、T L){height = H;幅= W;長さ= L;戻り値の高さ*幅*長さ;}}; int main(){最初のボリューム。 cout << "first volume:" << first。 getvolume()<< endl;最初。高さ= 2;最初。幅= 3;最初。長さ= 4; cout << "first volume:" << first。 getvolume()<< endl;ボリューム秒; cout << "第2巻:" <<秒。 getvolume(2.1,3.2,4.3)<< endl; cout << "height:" << second。高さ<< endl; cout << ""幅: "<<秒。幅<< endl; cout << "length:" << second。長さ<< endl; return 0;}
この場合、構造体は、コードがボリュームを決定するために使用できる高さ、幅、および長さのデータ値を含みます。構造体には値を初期化するコンストラクタが含まれているため、構造体を初期化せずに誰かがgetvolume()を呼び出しても、何も悪いことはありません。
<! - 1 - >構造により、各データ値に独立してアクセスすることができます。必要に応じて設定または取得できます。
getvolume()関数がオーバーロードされています。入力値の有無にかかわらず呼び出すことができます。 main()のコードは構造を完全にテストします。
最初のボリューム:0最初のボリューム:24第2ボリューム:28. 896高さ:2. 1幅:3. 2長さ:4. 3
次のような構造を使用できます。別の興味深い目的。 C ++標準では、typedefテンプレートを作成することはできません。たとえば、コンパイルしようとすると、次のコードでエラーが発生します。
<! - 2 - >テンプレートtypedef map MyDef;
Code::Blocksでこのコードをコンパイルしようとすると、次のエラーが表示されます。
error: 'typedef'のテンプレート宣言
ただし、構造テンプレート内にtypedefを定義できます。ここでは、StructureTemplate2のコード例を示します。
#include #include using namespace std;テンプレート構造体MyDef {typedef map Type;}; int main(){MyDef:::タイプ結婚;結婚["Tom"] = "Suzy";結婚["Harry"] = "Harriet"; cout << marriages ["Tom"] << endl; cout << marriages ["Harry"] << endl; return 0;}
この例は、struct、MyDef内にtypedefを配置することによってC ++の制限を克服しています。同じ構造体には、任意の数のtypedefエントリを保持できます。
<! - 3 - >このようにtypedefを使用すると、マップでの作業が簡単になります。あなたが心配する必要があるのは、値の型です。キー型はすでに文字列として定義されています。