I tried this: (Simple demo)
And it fails to compile at Line 43:
Am I going to have to retrieve each element of the structure one at a time? 
P.S. If I use the form:
Then yes, it will compile, however, then it would probably be the main code which will eventually fail because it needs the structure.
Code:
#COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" TYPE myStructure isValid AS LONG value1 AS LONG value2 AS LONG END TYPE CLASS InnerClass INSTANCE myElement AS myStructure INTERFACE InnerInterface INHERIT IUNKNOWN PROPERTY SET StoreValue (BYVAL myDataIn AS myStructure) myElement = myDataIn myElement.isValid = %TRUE END PROPERTY PROPERTY GET RetrieveValue () AS myStructure PROPERTY = myElement END PROPERTY END INTERFACE END CLASS CLASS OutterClass INSTANCE Inner() AS InnerInterface INSTANCE dCount AS LONG INTERFACE OutterInterface INHERIT IUNKNOWN PROPERTY SET StoreValue (BYVAL myDataIn AS myStructure, BYVAL myIndex AS LONG) IF myIndex < dCount THEN REDIM PRESERVE Inner(myIndex) LET Inner(myIndex) = CLASS "InnerClass" END IF Inner(myIndex).StoreValue = myDataIn END PROPERTY PROPERTY GET RetrieveValue (BYVAL myIndex AS LONG) AS myStructure LOCAL tValue AS myStructure tValue.isValid = %FALSE IF myIndex <= dCount THEN _ IF ISTRUE ISOBJECT(Inner(myIndex)) THEN _ tValue = Inner(myIndex).RetrieveValue PROPERTY = tValue END PROPERTY END INTERFACE END CLASS FUNCTION PBMAIN () AS LONG END FUNCTION
Code:
... IF myIndex <= dCount THEN _ IF ISTRUE ISOBJECT(Inner(myIndex)) THEN _ tValue = Inner(myIndex).RetrieveValue ... Error 482 in (PATH)\classtest.bas(43:030): Data type mismatch Line 43: tValue = Inner(myIndex).RetrieveValue

P.S. If I use the form:
Code:
IF myIndex <= dCount THEN _ IF ISTRUE ISOBJECT(Inner(myIndex)) THEN _ PROPERTY = Inner(myIndex).RetrieveValue
Comment