Bu, yığın sınıfımın bir parçası olduğunda değişmez. Flaşta iyi çalışıyor, ancak cpp/pencerelerde itme yöntemi her zaman çalışmaz. C++ 'ın neden tutarlı olmadığını anlamak için yeterince iyi anlamadım. gerçek uzunluğu (length
değişken ancak artış yok) 0 da sabitlenmiştir gibi push
satır içi Yöntem, satır içi yöntem
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) -> []
}
,
stack.push(0)
hep böyle bir şey, diziyi değiştirmez. Diğer zamanlarda, iyi çalışıyor.
inline
anahtar sözcüğünü kaldırırsam, her zaman iyi çalışır.
::msg::utils::Stack tmp = this->stack;
::msg::utils::Stack _this = tmp;
Array<int> tmp1 = _this->arr;
int tmp2 = (_this->length)++;
tmp1[tmp2] = (int)0;
Ve (push()
içinde) inlined değilken:
oluşturulan cpp inlined zaman (stack.push(0)
değiştirilmesi)
Dynamic tmp = this->arr;
int tmp1 = (this->length)++;
Dynamic tmp2 = t;
hx::IndexRef((tmp).mPtr,tmp1) = tmp2;
bir şey C++ yaptığı eksik var mı? Neden satır içi kod çoğu zaman çalışır, ancak başka zamanlarda işe yaramaz?
Son haxe, hxcpp, openfl vb
Bu C++ gibi görünmüyor. C++ CLI ya da bunun gibi bir şey mi? –
Gerçekten C++ değil. –
satır içi, işlevselliğe hiçbir şey yapmamalıdır. Bunu dişli bir ortamda mı kullanıyorsunuz? Threading sorunları tutarsız davranış olarak görünebilir – Jay