Kodumdaki bazı iddialar garip davranmaya başladı ve daha önce benzer bir durumun olup olmadığını merak ettim. gibi bir kısa kod parçacığı:Garip, mantıksal ve bool değişkenleri üzerinde başarısızlığı önler
#include <cassert>
class A{
protected:
bool isM, isN;
public:
void someFunction();
};
A::someFunction(){
assert (this->isM && this->isN);
...
}
bir assertion failed
sonucu verir. Öte yandan, sadece hafifçe kodu değiştirdikten sonra:
A::someFunction(){
assert(this->isM);
assert(this->isN);
...
}
iddialar hiçbir sorun ve fonksiyonu ile geçmesi normal bitirir. bool
değişkenleri, someFunction()
gerçek çağrısından önce ayarlandığından, işlev sonlandırması normal olarak beklenen işlevselliktir.
Başka bir soru olarak, C++'da iddiaların daha iyi bir yolu var mı? C üzerinde büyüdüm ve hala C tarzı iddiaları kullanıyorum. Bunun üzerine Google yüzeyini çizdim, ancak yeni bir şey olduğuna dair hiçbir şey bulamadım.
Gerekirse, sorunlu durumu tanımak için yeterli değilse, sınıf ve değişkenler için daha fazla bağlam sağlayabiliriz. bool
değişkenleri aslında bir alt sınıfın örneğinde ayarlanırken, someFunction
, arabiriminde uygulanan nadir işlevlerden biridir, ancak bu sorunu karmaşık hale getirdiğinden, yalnızca topluluk bunu uygun buluyorsa onu daha ayrıntılı olarak düzenleyeceğim.
'bool' değişkenlerinin' someFunction() 'çağrısından önce ayarlandığını mı söylüyorsunuz? – juanchopanza
Bools ayarlandı mı, değil mi? – dexametason
C++ 11, derleme zamanı onaylaması olan "static_assert" öğesini getiriyor. Sanırım önceki C++ sürümleri için de kullanılabilir. – RedX