Informix Error -4135: Only shared class variables can be defined outside class declaration.
Cause and resolution
Only shared class variables can be defined outside class declaration.
A class variable described as SHARED cannot be defined outside the class declaration. The variable definition indicated is completing the definition of a variable already described without a SHARED qualifier in a class declaration.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-4135 fires when a variable definition outside a class declaration completes a member variable
that wasn't declared SHARED inside the class — per the official guidance, only SHARED
class variables can be defined outside the class declaration itself.
- A member variable defined outside the class declaration, but not declared
SHAREDinside it, per the official guidance — the direct, only cause.
Solutions / Resolution
- Declare the member variable
SHAREDinside the class, if it genuinely needs an outside-the-class definition, or move its definition inside the class declaration.
Examples
Defining a non-SHARED member outside the class
CLASS Order
DEFINE total DECIMAL
END CLASS
DEFINE Order::total DECIMAL = 0
-- -4135: total was not declared SHARED
Corrected
CLASS Order
DEFINE SHARED total DECIMAL
END CLASS
DEFINE Order::total DECIMAL = 0
Diagnostic Checks
- Check whether a member variable defined outside its class declaration was declared
SHAREDinside that class, and addSHAREDif needed.
Related Errors / Related Topics
- -4009 — "Non-shared member "name" cannot be used in default values." A related
SHAREDmember-variable rule, about default value expressions rather than out-of-class definitions.
A member variable is defined outside its class declaration but isn't SHARED — declare it
SHARED inside the class.