I guess your problem is that the compiler doesn't recognize your "properties" pointers as pointing to instances of class Property, because you saved them as pointers to Square. Casting properties[i] to a pointer to class Property (((property*)properties[i])->colour
) should do the trick (you're explicitly telling the compiler that this is, in fact, that class, and you have made sure that it cannot be another class).
If Property and Special_Square are not, in fact, Squares, polymorphism may be the wrong choice here, though. There are other ways to accomplish the task, e.g. by an array of variants.