Как я могу предотвратить создание нового свойства в классе Luabind? - PullRequest
3 голосов
/ 01 июня 2011

Я использую Luabind для привязки классов C ++ к Lua.Из сценария Lua я могу добавить произвольные свойства (пары ключ / значение) в таблицы, которые представляют мои классы, даже если я никогда не говорил Luabind, что эти свойства существуют:

cheese = Cheese()
cheese.type = "gouda"
cheese.age = 2
cheese.hippopotamus = "monkey" -- Oops! This member was not defined!

Строка бегемота, хотя и бессмысленная,будет выполняться без возникновения ошибки Lua.

Как предотвратить появление этих новых свойств?Я знаю, что при использовании только API Lua C это можно сделать с помощью метаметода __newindex, но есть ли способ сделать это с Luabind?

1 Ответ

1 голос
/ 02 июня 2011

Я не говорю по своему опыту, но вот некоторые темы электронной почты из списка рассылки luabind-user: во-первых, монолог, сделанный парнем, пытающимся сделать именно то, что вы хотите . Во-вторых, несколько устаревшее (ноябрь 2009 г.) электронное письмо от сопровождающего luabind, в котором говорится, что предоставление настраиваемого метаметода __newindex в настоящее время невозможно, но запланировано на 1.0 (текущая версия 0.9.something).

...