On Mar 17, 2004, at 5:15 AM, Girish wrote:

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
 

Are you running the same version of gcc on both linux and mac systems? (gcc --version) The latest version for the mac is 3.3

[james-gibbs-computer:~] jgibbs% gcc --version
gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1495)
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


James

Reply via email to