这是我的堆栈类的一部分.它在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)