2012-08-31 26 views
8

tanım şu yapısını düşünün. Şablon olmayan bir sınıf için bu , örnek statik üye için tanımlanmış olan birden çok sembol nedeniyle bir bağlantı zamanı hatasına neden olur. Bunun şablonlar ile gerçekleşmesi sezgisel görünüyor, dolayısıyla tanımı tanımlayıp bir .cpp dosyasına koymalı. Ancak şablonlar genellikle başlık benzeri dosyalarda bildirilir ve tanımlanır. Bu sözdiziminin şablon sınıfları için geçerli ve işlevsel olmasını sağlayan nedir?C++ şablonları ve statik üyeleri başlığında

Bu konuda bir wikipedia bağlantısı var, ancak şablon sınıfları durumunda ne olduğu konusunda net bir açıklama sağlamaz. [basic.def.odr]/5 açıkça izin şablonlar çoğaltılmıştır Bunun nedeni çalışır

cevap

13

:

olabilir daha bir sınıf türü bir tanım (Madde 9), numaralandırma türü (7.2), dış bağlantı ile inline fonksiyonu (7.1 den .2), sınıf şablonu (Madde 14), statik olmayan işlev şablonu (14.5.6), bir sınıf şablonunun (14.5.1.3) statik veri üyesi, sınıf şablonunun (14.5.1.1) üye işlevi veya şablon uzmanlığı Her tanımın farklı bir çeviri biriminde göründüğü ve tanımların aşağıdaki şartları sağlaması koşuluyla, bir programda bazı şablon parametrelerinin belirtilmediği (14.7, 14.5.5). ...

Gereksinimler oldukça uzundur, bu yüzden onları burada çoğaltmayacağım, ancak aslında her bir yinelenen tanımın aynı olması gerektiğini belirtir (aksi halde programın tanımlanmamış davranışı vardır).

İlgili konular