Bool değerlerindeki bir vektörü temsil eden bir C veri yapısına sahibim; Kontrollerimin dışındaki nedenlerden dolayı, boole'lar, gerçek ve yanlışları temsil eden iki büyülü değerle (0 ve 1 değil) dahili olarak tamsayı olarak depolanırlar. Bu C yapısını sarmalayan bir C++ sınıfı oluşturdum ve güzel çalışıyor. Ben set()
ve get()
yöntemlerini uygulayan:C++ aşırı yük [] dönüşümlü
void Class::set(size_t index , bool value) {
if (value)
c_ptr[index] = SPECIAL_TRUE_VALUE;
else
c_ptr[index] = SPECIAL_FALSE_VALUE;
}
Bu Tamam çalışır; ama ideal olarak [] operatörüne aşırı yüklenmek isterim, ancak bunu nasıl yapabilirim ki/yapabilirim - bool ve tamsayı değerleri arasındaki özel dönüşümden dolayı? Class
yılında
* Proxy sınıfları hakkında biraz bilgi okumanız gerekiyor * – vsoftco
Evet - Bugün vekil derslerini öğrendim - ve atama operatörünü aşırı yükledim; Genelde yapmakta biraz isteksiz oldum. – user422005
Bu, çözümünüz için geçerli olabilir veya olmayabilir, ancak dönüşümlerin sıklığına karşı, boole erişimlerinin sıklığını düşünmelisiniz. Öncelikle set/get/[] işlevlerini kullanıyor ve nadiren SPECIAL _ * _ VALUE dönüşümünü kullanıyorsanız, yalnızca bobinleri depolamak ve gerektiğinde dönüştürmek daha kolay olabilir. – nic