Hi ,
I am new to this mailing list. I
am currenty invovled in one assignment.That assignments deals about
porting one application on Mac Os X.
I am running program correctly on Linux but it
gives the problem on Mac Os X
xyz.h
class xyzFlavor { public: xyzFlavor& operator= (const xyzFlavor& flavor); xyzFlavor operator+ (const xyzFlavor& flavor) const; xyzFlavor toString(); private: xyzFlavor(const Uint32 flavor); Uint32 cimFlavor; static const xyzFlavor NONE ; const xyzFlavor OVERRIDABLE ; const xyzFlavor ENABLEOVERRIDE; const xyzFlavor TOSUBCLASS ; const xyzFlavor TOINSTANCE ; const xyzFlavor TRANSLATABLE ; const xyzFlavor TOSUBELEMENTS ; const xyzFlavor DISABLEOVERRIDE; const xyzFlavor RESTRICTED ; const xyzFlavor DEFAULTS ; }; xyzFlavor.cpp const xyzFlavor xyzFlavor::NONE = 0; const CIMFlavor xyzFlavor::OVERRIDABLE = 1; const xyzFlavor xyzFlavor::ENABLEOVERRIDE = 1; const xyzFlavor xyzFlavor::TOSUBCLASS = 2; const xyzFlavor xyzFlavor::TOINSTANCE = 4; const xyzFlavor xyzFlavor::TRANSLATABLE = 8; const xyzFlavor xyzFlavor::TOSUBELEMENTS = TOSUBCLASS + TOINSTANCE; const xyzFlavor xyzFlavor::DISABLEOVERRIDE = 16; const xyzFlavor xyzFlavor::RESTRICTED = 32; const xyzFlavor xyzFlavor::DEFAULTS = OVERRIDABLE + TOSUBCLASS; xyzFlavor::xyzFlavor () : cimFlavor (xyzFlavor::NONE.cimFlavor) { } xyzFlavor::xyzFlavor (const CIMFlavor & flavor) : cimFlavor (flavor.cimFlavor) { } xyzFlavor & xyzFlavor::operator= (const xyzFlavor & flavor) { this->cimFlavor = flavor.cimFlavor; return *this; } xyzFlavor xyzFlavor::operator+ (const xyzFlavor & flavor) const { return xyzFlavor(this->cimFlavor | flavor.cimFlavor); } String xyzFlavor::toString ()
const
{ String tmp; if
(this->hasFlavor
(xyzFlavor::OVERRIDABLE))
tmp.append("OVERRIDABLE "); if
(this->hasFlavor
(xyzFlavor::TOSUBCLASS))
tmp.append("TOSUBCLASS "); if
(this->hasFlavor
(xyzFlavor::TOINSTANCE))
tmp.append("TOINSTANCE "); if
(this->hasFlavor
(xyzFlavor::TRANSLATABLE))
tmp.append("TRANSLATABLE "); if
(this->hasFlavor
(xyzFlavor::DISABLEOVERRIDE))
tmp.append("DISABLEOVERRIDE "); if
(this->hasFlavor
(xyzFlavor::RESTRICTED))
tmp.append("RESTRICTED "); if (tmp.size
())
tmp.remove (tmp.size () - 1); return
tmp;
} test.cpp static const xyzFlavor xyzFlavor_ALL = xyzFlavor::OVERRIDABLE + xyzFlavor::TOSUBCLASS + xyzFlavor::TOINSTANCE + xyzFlavor::TRANSLATABLE + xyzFlavor::DISABLEOVERRIDE + xyzFlavor::RESTRICTED; void main() { xyzFlavor f4 =
xyzFlavor (xyzFlavor_ALL);
cout <<
"\n----------------------\n";
cout << "f4: " << f4.toString () ; assert (f4.toString () == "OVERRIDABLE TOSUBCLASS TOINSTANCE TRANSLATABLE DISABLEOVERRIDE RESTRICTED"); } On Linux I am getting exact value of xyzFlavor_ALL but on Mac Os X , I am getting zero.After running the
code on Mac Os X ,it gives the assert . So I am not getting that how the
operator overloading and static global declaration work?
Can any one tell me why i am getting
the value of xyzFlavor_ALL = 0?
Regards
Girish
|