Aşağıdaki gibi bir sınıf ve verilen birleşim verildiğinde, sendika bir doğru değeri nasıl başlatır?Sınıf başlatıcısında birleşim nasıl ayarlanır?
Burada denenmekte olan şey, sınıf için temel veri türlerinden biri olarak iki veya daha fazla farklı tür kullanmaktır. Void * kullanmak yerine, türlerin önceden bilinmesi halinde, kullanılacak tiplerin birliği inşa edilir. Sorun, sınıf başlatıldığında doğru sendika üyesini nasıl başlatacağınızdır. Tipler polimorfik değildir, bu nedenle normal kalıtım modeli uygun görünmemiştir. Doğru sendika üyesini başlatmak için bazı naif girişimler hiçbir yere yol açmadı.
union Union {
int n;
char *sz;
};
class Class {
public:
Class(int n): d(1.0), u(n) {}
Class(char *sz): d(2.0), u(sz) {}
....
double d;
Union u;
};
çözüm için Temizleme sonra bir cevap belli oldu ve muhtemelen cevapları bu depo için iyi bir çözüm olabilir, bu yüzden aşağıya ekleyin.