Informix Error -4069
-4069 The type of expression on which member function "name" is
called is not a class.This statement attempts to invoke the specified function using either the scope resolution (::) operator or the record membership (.) operator. However, the name to the left of the scope resolution operator is not the name of a class in which name is a member, or the name to the left of the record membership operator is not the name of an object reference of which name is a member. If you intended to call name through a reference to an object, use object.name syntax. Otherwise, make sure that you have specified the class and member names that you intended, and review the declaration of the class.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-4069 fires when a function call uses :: or . but the left-hand name isn't a valid class
(for ::) or object reference (for .) that has that member — per the official guidance, if
calling through an object was intended, use object.name syntax; otherwise check the class and
member names.
- The name before
::isn't a class declaring that member, per the official guidance — the first named case. - The name before
.isn't an object reference that has that member, per the official guidance — the second named case.
Solutions / Resolution
- If calling through an object reference was intended, use
object.namesyntax, per the official guidance. - Otherwise, check the class and member names intended, and review the class declaration, per the official guidance.
Examples
Calling through a plain variable, not an object
DEFINE qty INTEGER
CALL qty::validate()
-- -4069: qty is not a class or object reference
Corrected
DEFINE o Order
CALL o.validate()
Diagnostic Checks
- Check whether the name before
::/.is actually a class or object reference, and switch toobject.namesyntax if calling through an object was intended.
Related Errors / Related Topics
- -4068 — "Function "class::member" has not been declared as SHARED." A related
member-call error, about a valid class's member not being
SHAREDrather than the left-hand operand not being a class/object at all. - -4029 — "The type of expression on which member "name" is selected is not an object reference or record." A closely related error covering the same non-class/non-object condition for member selection rather than member function calls.
The expression before ::/. isn't a valid class or object reference — check the names, or
switch to object.name syntax.