所以我习惯在我的应用程序中使用嵌套数组或设置图.我尝试在Clojure中设置一个像这样:
(def gridSettings
{:width 50
:height 50
:ground {:variations 25}
:water {:variations 25}
})
Run Code Online (Sandbox Code Playgroud)
我想知道你是否知道检索嵌套值的好方法?我试着写作
(:variations (:ground gridSettings))
Run Code Online (Sandbox Code Playgroud)
哪个有效,但它是后缀并且相当繁琐,特别是如果我添加几个级别.
所以我想在我的cocos2d + box2d项目中公开公开一个指向其他Objective-C++类的Box2D(C++)指针.我在我的界面中声明了一个方法"getWorld",它引用了C++类b2World并导入了Box2D.h.我项目中的所有文件都是.mm扩展名,我收到以下编译错误:
In file included from DebugDrawLayer.mm:2:
In file included from World.h:10:
In file included from external/Box2d/Box2D/Box2D.h:34:
external/Box2d/Box2D/Common/b2Settings.h:22:10: fatal error: 'cassert' file not found
#include <cassert>
Run Code Online (Sandbox Code Playgroud)
我猜Box2D.h以某种方式编译为C而不是C++,但我不明白这是怎么发生的.根据日志,包含链明显从.mm文件开始.
更新:
对于World.mm(之前编译)的日志说明它明确编译为objective-c ++
CompileC Objects-normal/i386/World.o World.mm normal i386 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
Run Code Online (Sandbox Code Playgroud)
但对于DebugDrawLayer.mm,它表示objective-c
CompileC Objects-normal/i386/DebugDrawLayer.o DebugDrawLayer.mm normal i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler
Run Code Online (Sandbox Code Playgroud)
这两个文件都设置为默认值 - Objective-C++ source.是什么赋予了..?