После многих поисков я нашел довольно хорошее решение, используя Lua
Lua, который я обнаружил, изначально разрабатывался как язык файлов конфигурации, но затем превратился в полноценный язык программирования.
Пример
util.lua
-- helper function needed for inheritance
function inherit(t) -- return a deep copy (incudes all subtables) of the table t
local new = {} -- create a new table
local i, v = next(t, nil) -- i is an index of t, v = t[i]
while i do
if type(v)=="table" then v=inherit(v) end -- deep copy
new[i] = v
i, v = next(t, i) -- get next index
end
return new
end
globalsettings.lua
require "util"
SpaceShip = {
speed = 1,
rotation =1
}
myspaceship.lua
require "globalsettings" -- include file
FastSpaceship = inherits(SpaceShip)
FastSpaceship.Speed = 10
FastSpaceship.Rotation = 5
MotherShip = inherits(FastSpaceship)
MotherShip.ShieldRecharge = 4
ShieldRecharge.WeaponA = {
Power = 10,
Range = 20,
Style = "fireball"
SlowMotherShip = inherits(MotherShip)
SlowMotherShip.Speed = 4
Используя функцию печати в Lua, также легко проверить настройки, если они верны. Синтаксис не так хорош, как мне бы хотелось, но он настолько близок к тому, что я хочу, я не против написать немного больше.
Использование кода здесь http://windrealm.com/tutorials/reading-a-lua-configuration-file-from-c.php Я могу прочитать настройки в моей программе C ++