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
 

Reply via email to