C++98 Mapping for Local Classes

On this page:

Mapped C++ Class

A local Slice class is mapped to a C++ class with the same name. For example:

Slice
module Ice
{
    local class ConnectionInfo
    {
        ...
    }
}

is mapped to the C++ class ConnectionInfo:

C++
namespace Ice
{
    class ConnectionInfo : public virtual Ice::LocalObject
    {
        ...
    };
    typedef IceInternal::Handle<ConnectionInfo> ConnectionInfoPtr;
}

LocalObject in C++

Like local interfaces, local Slice classes implicitly derive from LocalObject, which is mapped to Ice::LocalObject in C++98.

Mapping for Local Interface Inheritance in C++

A local Slice class can extend another local Slice class, and can implement one or more local Slice interfaces. extends for classes is mapped by default to simple inheritance in C++, while implements is mapped to public virtual inheritance. For example:

Slice
module M
{
    local interface A {}
    local interface B {}
    
    local class C implements A, B {}
    local class D extends C {}
}

is mapped to:

C++
namespace M
{
    class A : public virtual Ice::LocalObject { ... };
    class B : public virtual Ice::LocalObject { ... };
    
    class C : public virtual A, public virtual B { ... };
    class D : public C { ... };
}