Another C++ problem, in the GetPointer function elm is a shared pointer in the C++ output when it's requested to be simple pointer. Since the function is returning a simple pointer. So it ends up trying to return the shared pointer instead of the simple pointer.
class TestItemClass
{
public string() Name;
}
class TestClass
{
SortedDictionary<string(), TestItemClass#>() Items;
internal TestItemClass!? GetPointer!(int Number) throws Exception
{
if(Number < 1 || Number > Items.Count)
throw Exception("Number out of range");
int count = 0;
foreach((string name, TestItemClass!? elm) in Items)
{
count++;
if(count == Number)
return elm;
}
throw Exception("bad number."); //should never reach this due to the number check above
}
}
This one I can at least work around by changing elm from a simple pointer to a shared pointer. (from ! to #) Then it correctly returns elm.get().
Another C++ problem, in the GetPointer function elm is a shared pointer in the C++ output when it's requested to be simple pointer. Since the function is returning a simple pointer. So it ends up trying to return the shared pointer instead of the simple pointer.
This one I can at least work around by changing elm from a simple pointer to a shared pointer. (from ! to #) Then it correctly returns elm.get().