hata:-eski tarz temel sınıf başlatıcı çağdışı
Aşağıdaki kodu C 98 C 11 ve C 14 modlarında denedim GCC sürümleri, sonraki derleme hatası üretir:
struct T
{
T(void* x) : (x) {}
};
// main.cpp: In constructor 'T::T(void*)':
// main.cpp:3:18: error: anachronistic old-style base class initializer [-fpermissive]
// T(void* x) : (x) {}
// ^
// main.cpp:3:16: error: unnamed initializer for 'T', which has no base classes
// T(void* x) : (x) {}
Tabii, aslında hiçbir şey başlatılıyor değilim çünkü açık kod bozuldu.
Ama neden taban sınıf bir initialiser ve neden "" yerine, basitçe yanlış? çağdışı Oldu bir kere geçerli? Ne zaman? Ve bunu derken ne demek istedin?
Bu only related references buldum için bu web etmiş insanlar geliyor karşısındaki hata ne zaman bir üye adı vardı yanlışlıkla makro......, etkili sonuç aynı kodu yukarıdaki gibi:
#define bar
// ^ some library could have done this
struct T
{
T(int x)
: bar(x) // effectively just `: (x)`
{}
int bar; // will cause its own error
};
Bu insanlar asla onlar daha sonra kendi programı kırıldı neden en az keşfedilmiş olsa da bu hata ne anlama geldiğini bulamadım.
CEVAP
CFront, ilk C compiler: 1984-5 serbest bırakılması için bu belgeleri bulundu
Kapsam çözümleme operatörü :: sonsuz özyineleme yakalandığını kazandıktan çağırarak önlemek için kullanılır::elem() kendisi (tekli :: genel adları bakınız) için kullanılır.
Kurucu aşağıdaki gibi yazılabilir:
vec.vec(int lb, int hb) : (hb-lb 1) { if (hb-lb<0) hb * lb low = lb; high = hb; }
Yapı : (hb-1 lb) bağımsız değişken listesi belirtmek için temel sınıf yapıcı vektör için gerekli kullanılır().
Mantıklı, eğer düşünürsen. Muhtemelen temel sınıf açık adlandırma çoklu kalıtım desteği eklendi.
Kredi 8 ** belgeleri arşivlemek için.
...ve Vay besadece şimdi"CFront" kelime oyunu vardı. bunu fark ettim
Arayüz vs Temel sınıf...
C , sanal bir temel sınıf nedir?...
Bir temel sınıf'In sanal işlev İ&...
hata: üye '..' olmayan bir s...
Bu yürütülebilir dosya için geçerli bi...