Aracılığıyla paylaş


Derleyici Uyarısı C5038

'member1' veri üyesi 'member2' veri üyesinden sonra başlatılacak
'member' veri üyesi 'base_class' temel sınıfından sonra başlatılacak

Açıklamalar

Sınıf üyeleri, başlatıcı listelerinde göründükleri sırayla değil, bildirildikleri sırayla başlatılır. Derleyici, başlatma sırası veri üyelerinin veya temel sınıfların bildirim sırasıyla aynı olmadığında uyarır. Sıra tanımlanmamış çalışma zamanı davranışına yol açabilir: Örneğin, listedeki bir üyenin başlatılması daha sonra bildirilen bir üyenin başlatılmasına bağlıysa.

Bu uyarı Visual Studio 2017 sürüm 15.3'te yenidir ve varsayılan olarak kapalıdır. Varsayılan olarak kapalı olan tüm uyarıları etkinleştirmek veya /w15038 C5038'i düzey 1 uyarısı olarak etkinleştirmek için kullanın/Wall. Daha fazla bilgi için bkz . Varsayılan olarak kapalı olan derleyici uyarıları. Uyarıları derleyici sürümüne göre devre dışı bırakma hakkında bilgi için bkz . Derleyici sürümüne göre derleyici uyarıları.

Örnek

Aşağıdaki örnekte, Derleyici (/w15038 kullanırken) "uyarı C5038: 'A::y' veri üyesi 'A::x' veri üyesinden sonra başlatılır" uyarısını verir:

// C5038.cpp
// Compile using: cl /EHsc /c /w15038 C5038.cpp
struct A
{
    A(int a) : y(a), x(y) {} // C5038, Initialized in reverse, y reused
    int x;
    int y;
};

Bu sorunu düzeltmek için başlatıcı listesini bildirimlerle aynı düzene sahip olacak şekilde düzenleyin. Başlatıcılardan biri veya her ikisi de temel sınıf üyelerine başvurduğunda benzer bir uyarı oluşturulur.