Aracılığıyla paylaş


Derleyici Hatası C2558

'tanımlayıcı' : kullanılabilir kopya oluşturucu yok ya da kopya oluşturucu 'açık' olarak belirtildi

Kopya oluşturucusu, bir nesneyi aynı türde başka bir nesneden başlatır. (Nesnenin bir kopyasını oluşturur.) Herhangi bir oluşturucu tanımlamazsanız derleyici varsayılan bir kopya oluşturucu oluşturur.

Bu hatayı düzeltmek için

  1. Bu sorun, kopya oluşturucusunun privateolduğu bir sınıfı kopyalama girişiminde bulunulduğunda oluşabilir. Çoğu durumda, kopya oluşturucuya sahip bir private sınıf kopyalanmamalıdır. Yaygın bir programlama tekniği, bir private sınıfın doğrudan kullanımını önlemek için bir kopya oluşturucu bildirir. Sınıf kendisi tarafından kullanılamayabilir ya da düzgün şekilde çalışması için başka bir sınıf gerektirebilir.

    Kopya oluşturucuya sahip private bir sınıfı kullanmanın güvenli olduğunu belirlerseniz, oluşturucuyu içeren private sınıfından yeni bir sınıf türetin ve yeni sınıfta bir public veya protected kopya oluşturucuyu kullanılabilir hale getirin. Türetilen sınıfı orijinalinin yerine kullanın.

  2. Bu sorun, kopya oluşturucusunun açık olduğu bir sınıfı kopyalama girişiminde bulunulduğunda oluşabilir. Bir kopya oluşturucunun olarak explicit bildirilmesi, bir sınıfın nesnelerinin işlevlere geçirilmesini/döndürülmesini önler. Açık oluşturucular hakkında daha fazla bilgi için bkz . Kullanıcı Tanımlı Tür Dönüştürmeleri.

  3. Sorun, başvuru parametresi almayan const bir kopya oluşturucu kullanılarak bildirilen const bir sınıf örneğini kopyalama girişiminde bulunulduğunda oluşabilir. Kopya oluşturucunuzu const olmayan bir const tür başvurusu yerine bir tür başvurusuyla bildirin.