# Array of (object) handles with add_on array

This topic is 1750 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Are there any existing examples of having an array of object handles (where these are C++ -exposed objects which are reference types in script)?

The array add_on has one example which uses the syntax: array<int>.  array<@> didn't seem to work.

I've seen examples that use a syntax like: MyObjectType@[].

But that didn't seem to work for me either. There must be existing examples out there.... ?

Thank you very much.

##### Share on other sites

The syntax for arrays of object handles is like this:

array<Object@> arrayOfHandles;


Alternatively if you've registered the array add-on as the default array type, i.e. with RegisterScriptArray(engine, true), you can use the following syntax:

Object@[] arrayOfHandles;


I've taken a note to add an explanation for this in the manual, thanks.

##### Share on other sites

No, that is not what I'm saying. There is no built-in array type.

You must register the array type, either with RegisterScriptArray() or by using your own implementation.

What I'm saying is that the second argument for RegisterScriptArray() tells the compiler if it should allow the syntax 'type[]' to declare the array types or just 'array<type>'.

Observe, the syntax 'type[]' for dynamic arrays will likely be deprecated sometime in the future (as I'll need it for static arrays).

##### Share on other sites

EDIT: Ahh, sorry. I just saw that you fixed exactly that issue lately.

That's what I get for not using the very latest revision. Cheers.

---

Hey,

I'm currently using AngelScript for a little game project and recently noticed a shortcoming in the ScriptArray Addon related to this topic:

I'm using an array of handles defined like so:
array<GameObject@> currentGroup;

Unfortunately, the 'find' method does not work on the array,

unless an equal-comparison operator is defined for the GameObject type.

int pos = currentGroup.find(@character);


I don't define any such operator, because I want to compare the object handles only by their address.

The expression (@character1 == @character2) works perfectly well, only the array-type does not support it.

It seems to me that the CScriptArray::Precache method must be changed to make that possible.

It's probably a small fix. But unfortunately, I don't know enough about AngelScripts internals to do it myself.

Any chance to see this fixed in the next revision?

Thank you.

1. 1
Rutin
47
2. 2
3. 3
4. 4
5. 5

• 13
• 10
• 12
• 10
• 13
• ### Forum Statistics

• Total Topics
632997
• Total Posts
3009799
• ### Who's Online (See full list)

There are no registered users currently online

×