class Base {
protected:
union {
struct {
bool bBold : 1;
bool bFakeBold : 1;
};
int a;
};
public:
bool isBold() {
return bBold;
}
};
टेस्ट वर्ग:संरक्षित क्यों इस वर्ग में सदस्य की रक्षा नहीं करता है?
#include <assert.h>
#include <stdio.h>
int main()
{
Base d;
d.bBold = false;
assert(d.isBold() == false);
d.bBold = true;
assert(d.isBold() == true);
printf("good");
return 0;
}
दोनों msvc11 और जी ++ किसी भी त्रुटि के बिना संकलन।
क्यों?
यूनियनों का उपयोग न करने का एक और कारण ऐसा लगता है। –
क्लैंग 3.2 'त्रुटि देता है:' bBold 'अपेक्षित के रूप में' बेस 'के संरक्षित सदस्य हैं। जीसीसी 4.7.2 शिकायत नहीं करता है ('संरक्षित 'और यहां तक कि' निजी' के लिए) – alfC
एमएसवीसी एक चेतावनी देता है [सी 4201] (http://msdn.microsoft.com/en-us/library/c89bw853 (v = बनाम .71) .aspx) – spiritwolfform