Video: Coding Minecraft in One Week - C++/OpenGL Programming Challenge 2024
Yapı şablonlarının, belirli bir türe bağımlı olmayan bir veri havuzunun oluşturulması gibi ilginç kullanımları vardır. Burada StructureTemplate örneği böyle bir kullanımı gösterir.
#include ad alanı std kullanarak; şablon struct Cilt {T yükseklik; T genişliği; T uzunluğu; Ses () {height = 0; genişlik = 0; uzunluk = 0;} T getvolume () {dönüş yüksekliği * genişlik * uzunluğu;} T getvolume (T H, T W, T L) {yükseklik = H; genişlik = W; uzunluk = L; dönüş yüksekliği * genişlik * uzunluk;}}; int main () {Birincisi; cout << "ilk cilt:" << ilk önce. getvolume () << endl; ilk. yükseklik = 2; ilk. genişlik = 3; ilk. uzunluk = 4; cout << "ilk cilt:" << ilk önce. getvolume () << endl; Hacim ikinci; cout << "ikinci cilt:" << ikinci. getvolume (2. 1, 3. 2, 4. 3) << endl; cout << "yükseklik:" << ikinci. yükseklik << endl; cout << "genişlik:" << ikinci. genişlik << endl; cout << "uzunluk:" << ikinci saniye. uzunluk << endl; return 0;}
Bu durumda, yapı hacim belirlemek için kodun kullanabileceği yükseklik, genişlik ve uzunluk verileri değerlerini içerir. Yapı, değerleri başlatmak için bir yapıcı içerir; bu nedenle, birisi yapıyı başlatmadan getvolume () çağırsa da, hiçbir şey olmaz.
Yapı, her bir veri değerinden bağımsız olarak erişime izin verir. Onları istediğiniz gibi ayarlayabilir veya alabilirsiniz.
getvolume () işlevi aşırı yüklenmiştir. Giriş değerleri ile veya girdi değerleri olmadan arayabilirsiniz. Main () içindeki kod yapısı iyice sınar. İşte bu örnekten çıktı olarak gördüğünüz:
Birinci hacim: 0 Birinci hacim: 24 İkinci hacim: 28. 896 Yükseklik: 2. 1 Genişlik: 3. 2 Uzunluk: 4. 3
Bir başka ilginç amaç. C ++ standardı typedef bir şablon oluşturamayacağınızı söylüyor. Örneğin, aşağıdaki kodu derlemeye çalıştığınızda bir hata üretir:
şablon typedef map MyDef;
Kod:: Bloklar'da bu kodu derlemeye çalıştığınızda aşağıdaki hata görürsünüz:
hata: 'typedef'
şablon bildirimi Ancak, bir yapı şablonu içinde bir typedef tanımlayabilirsiniz. Burada StructureTemplate2 örnek kodu nasıl yapılacağını gösterir.
#include #include using namespace std; şablon struct MyDef {typedef map Type;}; int main () {MyDef:: Giriş evlilikleri; evlilikler ["Tom"] = "Suzy"; evlilikler ["Harry"] = "Harriet"; cout << evlilikler ["Tom"] << endl; cout << evlilikler ["Harry"] << endl; return 0;}
Bu örnek, typedef'i MyDef yapısında yerleştirerek C ++ sınırlamalarını yener. Aynı yapı, herhangi bir sayıdaki typedef girdisini tutabilir.
Bu şekilde bir typedef kullanmak harita ile çalışmayı kolaylaştırır.Endişelenmeniz gereken şey değer türüdür - anahtar türü zaten dize olarak tanımlanmıştır.