小编MSG*_*ero的帖子

方法内联时,数组不会更改

这是我的堆栈类的一部分.它在flash中工作正常,但在cpp/windows中,push方法并不总是有效.我不太了解C++,无法理解为什么它可能不一致.

var arr:Array<T>;
public var length(default, null):Int;

public function new() {
    clear();
}

public inline function clear():Void {
    arr = [];
    length = 0;
}

public inline function push(t:T):Void {
    // Log.trace(arr) -> []
    arr[length++] = t;
    // Log.trace(arr) -> []
}
Run Code Online (Sandbox Code Playgroud)

push内联时,类似的东西stack.push(0)并不总是改变数组,就像它的真实长度固定为0(length然而变量确实增加).其他时候,它工作正常.如果我删除inline关键字,它一直正常工作.

内联(替换stack.push(0))时生成的cpp :

::msg::utils::Stack tmp = this->stack;
::msg::utils::Stack _this = tmp;
Array< int > tmp1 = _this->arr;
int tmp2 = (_this->length)++;
tmp1[tmp2] = (int)0;
Run Code Online (Sandbox Code Playgroud)

当没有内联(内部push())时:

Dynamic …
Run Code Online (Sandbox Code Playgroud)

c++ windows arrays haxe hxcpp

6
推荐指数
1
解决办法
145
查看次数

标签 统计

arrays ×1

c++ ×1

haxe ×1

hxcpp ×1

windows ×1