Я когда-то давно изучал С, но это было еще до появления С++.
Ну вот, ты, оказывается, уже почти все знаешь! А я-то думал, что ты вообще ни бум-бум... А еще говорил про околонулевой уровень. А больше ты ничего не изучал? Может, Паскаль или Бейсик? Или вот Фортран в свое время в технических вузах преподавали...
В общем, мое мнение поменялось на 180 градусов: теперь я настоятельно рекомендую хотя бы в общих чертах понять, что такое класс и заняться Squirrel. Видишь,
HellRaiser тебе уже все объяснил.
(А если серьезно, то я не совсем понимаю, зачем все так усложнять, давать примеры на C++, что-то писать про Qt и проч., и проч. Мы же не собираемся из Зонтика сделать заправского программиста, а просто пытаемся объяснить ему, что такое Squirrel, который на порядок проще, чем C++ - например, там даже приватности членов нет).
А класс - это всего лишь описание объекта. И все. Это примерно как архетип в Thief - вот есть архетип (который еще не объект, а просто его схема), а есть объект, который на основе этого архетипа создан. Или несколько однотипных объектов.
Подобно архетипам в Thief, класс может иметь свойства (это переменные, которые привязаны к классу). Таким образом, всякий раз, когда на основе класса создается объект, создается набор таких переменных (свойств). Можно сказать, что физически объект представляет собой набор таких свойств-переменных. И еще класс может иметь методы (т. е. функции, привязанные к этому классу). Когда у нас создан объект, то мы можем вызывать у него эти функции, благодаря чему объект является не просто хранилищем данных, а "оживает", т. е. выполняет некие задачи, свойственные этому объекту (точнее, свойственные именно этому классу, на основе которого объект был создан).
Подобно архетипам же, классы могут наследоваться, т. е. мы можем взять некий простой класс и создать на его основе новый класс, добавив в него свойства и/или методы - таким образом получив более сложный класс. Так же мы можем в наследном классе переписать некоторые уже существующие методы, модифицировав поведение класса (это называется полиформизм).
Еще немного терминологии:
- объект, созданный на основе класса, называется экземпляром класса;
- свойства и методы класса называются членами класса.
Собственно, я думаю, это вся теория, которую тебе нужно для начала знать.
Для сравнения приведу скрипт на Lua и аналогичный скрипт на Squirrel. Это скрипт, который выводит id объекта и заодно считает, сколько раз его фробнули (можно для пробы повесить его, например, на кнопку):
-- Это скрипт на Lua
local frobCount = 0
function FrobWorldBegin(msg)
frobCount = frobCount + 1
lgs.DarkUISrv.TextMessage("Object id=" .. msg.to .. " frobbed " .. frobCount .. " times")
return true
end
// Это скрипт на Squirrel
class FrobCount extends SqRootScript
{
frobCount = 0;
function OnFrobWorldBegin()
{
frobCount++;
DarkUI.TextMessage("Object id=" + message().to + " frobbed " + frobCount + " times");
return true;
}
}
Как видишь, не все так страшно. Добавлена строчка спереди и фигурные скобки. Все остальное аналогично.