У меня есть свой класс, вот его верхняя часть с членами и конструктором.
Но allocate почему-то всегда возвращает 0...
Почему?
class PHS_Stack
{
	private PlayerHeroSnapshot m_arr[4096];
	private int m_size;
	private int m_maxSize;

	
	static method create takes int maxSize returns PHS_Stack
		PHS_Stack obj = PHS_Stack.allocate();
		obj.m_size = 0;
		
		if (maxSize > 4096)
		{
			obj.m_maxSize = 4096;
			GMSG("|cFFFFFF00Warning: |r maxSize of PHS_Stack exceeds 4096! It is set to 4096.");
		}
		else
		{
			obj.m_maxSize = maxSize;
		}
		
		int i = 0;
		while (i < obj.m_maxSize)
		{
			obj.m_arr[i] = 0;
			i++;
		}
		GMSG("obj==" + I2S(obj));
		return obj;
	endmethod

Принятый ответ

NazarPunk:
Не нашёл документации по class, но можете попробоывать
local PHS_Stack this = PHS_Stack.allocate();
Ну class это для личного удобства у меня продефайнен как struct, сейчас проверю...
Не работает, ну как я и думал. смысла называть переменную this в статическом методе 0.
Я понял в чем была проблема. В размере массива.
Да, в классах оказывается лимит на размеры массивов, и если там объявлен слишком большой массив такой класс никогда не будет создан.
Понизил до с 4096 до 1024, создается.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
19
5 лет назад
2
Похожие вопросы:

ответ
На хайве получил ответ, надо было писать evaluate

0
29
5 лет назад
0
Не нашёл документации по class, но можете попробоывать
local PHS_Stack this = PHS_Stack.allocate();
0
16
5 лет назад
Отредактирован Drulia_san
0
NazarPunk:
Не нашёл документации по class, но можете попробоывать
local PHS_Stack this = PHS_Stack.allocate();
Ну class это для личного удобства у меня продефайнен как struct, сейчас проверю...
Не работает, ну как я и думал. смысла называть переменную this в статическом методе 0.
Я понял в чем была проблема. В размере массива.
Да, в классах оказывается лимит на размеры массивов, и если там объявлен слишком большой массив такой класс никогда не будет создан.
Понизил до с 4096 до 1024, создается.
Принятый ответ
0
28
5 лет назад
0
Drulia_san, документацию vJass читать надо, там написано об этом. А ещё Debug Mode включи, тогда тебе сообщения будут выводиться о различных ошибках.
NazarPunk:
но можете попробоывать
Это ни на что не повлияет.
Drulia_san:
смысла называть переменную this в статическом методе 0.
Смысл есть, не надо писать set name.attribute = x, а сразу set attribute = x.
Понизил до с 4096 до 1024, создается.
У тебя будет всего 7 объектов этого класса.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.