library SomeOneCoolSpell{
	private int Godi= 0
	private GOD array God[100]
	
	private struct GOD{
		unit main
		static thistype Create(unit u){
			thistype g = thistype.create()
			
			set g.main = u
			
			set Godi= Godi+ 1
			set God[Godi] = g
			return g
		}
	}
}
В каждой библиотеке будет по структуре и я сделал их приватными. Вообще структур будет много. И дабы избежать наступания на грабли, я решил сделать глобал переменные структур приватными, как и сами структуры.
Но компилятор ругается. Я дурак?

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

В конструкторе ты заносишь новосозданный объект не в God а в GOD, т.е. вместо переменной у тебя имя структуры.
Еще у тебя объявляется переменная до определения типа этой переменной, использовать GOD как тип переменной выше определения что это за тип GOD нельзя
code
library SomeOneCoolSpell {
	private int GODi = 0
    private keyword GOD // заранее объявляем тип
	private GOD array God[100]
	
	private struct GOD {
		unit main
		static thistype Create(unit u){
			thistype g = thistype.create()
			
			set g.main = u
			
			set GODi = GODi + 1
			set God[GODi] = g // исправил имя переменной
			return g
		}
	}
}
0
16
7 лет назад
Отредактирован Naadir
0
А какого рода граблей ты боишься, делая переменные приватными? Насколько я понимаю, приватные переменные - те, что используются только в библиотеке. И ещё я нашёл объяснение похожей проблемы на хайве. Вот: www.hiveworkshop.com/threads/jass-private-and-local-variables.12...
0
22
7 лет назад
0
Naadir:
А какого рода граблей ты боишься, делая переменные приватными? Насколько я понимаю, приватные переменные - те, что используются только в библиотеке. И ещё я нашёл объяснение похожей проблемы на хайве. Вот: www.hiveworkshop.com/threads/jass-private-and-local-variables.12...
Я использую приватные переменные и приватные структуры что бы избежать наступания на грабли.
0
16
7 лет назад
Отредактирован Naadir
0
Bornikkeny:
Давай попробуем ещё раз. Каких граблей ты боишься? Что такое "грабли"? Какие проблемы у тебя могут возникнуть? Ты посмотрел ссылку? У тебя не схожая проблема? Если нет - извини, я подумаю, что ещё можно сделать.
0
22
7 лет назад
0
Naadir:
Bornikkeny:
Давай попробуем ещё раз. Каких граблей ты боишься? Что такое "грабли"? Какие проблемы у тебя могут возникнуть? Ты посмотрел ссылку? У тебя не схожая проблема? Если нет - извини, я подумаю, что ещё можно сделать.
У меня компилятор ругается.
0
16
7 лет назад
Отредактирован Naadir
0
Bornikkeny:
Посмотри по коду, не возникает ли у тебя ситуации, что приватная переменная используется в функции типа takes nothing returns nothing. В таком в takes укажи её. Иначе давай думать.
0
22
7 лет назад
0
Naadir:
Bornikkeny:
Посмотри по коду, не возникает ли у тебя ситуации, что приватная переменная используется в функции типа takes nothing returns nothing. В таком случае она должна забирать эту переменную.
Нет. Чел, мне кажется что ты не шаришь. Так же как и я. Давай, найдем тех кто шарит, а пока, подождем.
5
20
7 лет назад
Отредактирован biridius
5
В конструкторе ты заносишь новосозданный объект не в God а в GOD, т.е. вместо переменной у тебя имя структуры.
Еще у тебя объявляется переменная до определения типа этой переменной, использовать GOD как тип переменной выше определения что это за тип GOD нельзя
code
library SomeOneCoolSpell {
	private int GODi = 0
    private keyword GOD // заранее объявляем тип
	private GOD array God[100]
	
	private struct GOD {
		unit main
		static thistype Create(unit u){
			thistype g = thistype.create()
			
			set g.main = u
			
			set GODi = GODi + 1
			set God[GODi] = g // исправил имя переменной
			return g
		}
	}
}
Принятый ответ
0
22
7 лет назад
0
biridius уже превосходит богов! Кто-нибудь остановите его!
Два балона Балтики данному мужыку.
0
30
7 лет назад
0
Godi
Венгерская нотация неэффективна, попробуй просто называть переменные по их существу.
0
22
7 лет назад
0
Clamp:
Godi
Венгерская нотация неэффективна, попробуй просто называть переменные по их существу.
Та это я чисто ради примера говнокод написал. Даже название либы почитай (SomeoneCoolSpell).
Чтобы оставить комментарий, пожалуйста, войдите на сайт.