Atl 2.1 Visual c++ 5.0 Derleyici için optimize edilmiştir. Özellikle, birçok atl sınıfları ile bildirilir bilmeniz gerekir ATL_NO_VTABLE makro:
sı&nıf atl_no_vtable CComControl
{
nbsp; ...
}
Atl tanımlar ATL_NO_VTABLE gibi:
#ifdef _ATL_DISABLE_&NO_VTABLE
nbsp; # define atl_no_vtable
# başka
# define atl_no_vtable __declspec(novtable)
endif
Eğer _ATL_DISABLE_NO_VTABLE tanımlı değil, ATL_NO_VTABLE makro genişlemek için declspec(novtable) . Ne zaman declspec(novtable) kullanılan sınıfı bildiriminde şu önler o vtable işaretçiyi sınıfının yapıcı ve yıkıcı başlatıldı. Bağlayıcının böylece vtable ortadan kaldırabilir ve tüm fonksiyonları işaret için vtable tarafından çoğu türetilmiş sınıf (genellikle CComObject, CComAggObjectveya CComPolyObject) değil kullanın şartıyla declspec(novtable) ve böylece vtable işaretçiyi düzgün başlatılır.
Varsayılan olarak, yeni sınıfları ile atl nesne sihirbaz oluşturur ATL_NO_VTABLE makro. Daha önce açıklandığı gibi declspec(novtable) özniteliği ile doğrudan creatable olmayan temel sınıflar yalnızca kullanılmalıdır. Ayrıca, arama sanal işlevleri kullanan herhangi bir nesne yapıcısı güvensiz declspec(novtable) . FinalConstruct yöntemi bu tür aramaların taşımalısınız.
Yoksa sen-meli kullanma konusunda emin değilseniz declspec(novtable) özniteliği, sen-ebilmek çıkarmak ATL_NO_VTABLE makro herhangi bir sınıf tanımı ya da size küresel sakatlar o belirterek #define _ATL_DISABLE_NO_VTABLE stdafx.h içinde tüm diğer atl önce üstbilgi dosyaları dahil.