About NONSHARABLE_CLASS:
We can find some information from “Symbian OS v9.2 - Symbian OS reference - C++ component reference - Base E32_COMPSUPP - NONSHARABLE_CLASS”
Location: gcce.h
NONSHARABLE_CLASS
NONSHARABLE_CLASS (x) class __declspec(notshared) x
Description
Declares a class as being non-sharable.
If a class is non-sharable, then a class implemented in another DLL cannot derive (inherit) from that class.
Declaring a class as non-sharable prevents the compiler from exporting compiler implementation-specific symbols, i.e. run-time type-information and virtual tables. This prevents classes in other DLLs from being able to derive from it.
Note :
if a class is marked as non-sharable, then Symbian OS requires all classes that are derived from that class are implemented in the same DLL.
By default, a class is sharable.
The following code fragment shows how a non-sharable class is declared.
NONSHARABLE_CLASS(CMyClass) : public CBase
{
public :
...
private :
...
}
The name of the class to be declared as non-sharable.