今天在给安卓打包的时候出现了这个错误is not a class or namespace,截图如下
查看cpp文件的相应的一行是这样写的
这一行是调用了一个enum的,也就是说报的错误是enum的错误,这个在c++中可以识别,但是java就报错
这个在Xcode上面运行c++语言都是可以通过的,但是java转换的不行。
解决方案就是直接调用enum里面的,类似于我的第一张图片的出错,就是直接用MHero::KCondAwa就行了,不要用MHero::conditionType::KCondAwa。
当然这个说的是因为enum的原因,如果是其他原因导致的,你就需要查查是不是没有引入文件对应的命名空间,比如using namespace std;以及头文件是否引入正确。
续
类似的原因,我在stackoverflow上面搜到了相似的问题
问题是这样的
头文件
enum MyEnum { Something = 0, SomethingElse = 1 }; class MyClass { MyEnum enumInstance; void Foo(); };
在c++文件
#include "MyCode.h" void MyClass::Foo() { enumInstance = MyEnum::SomethingElse; }
因为这个MyEnum::SomethingElse并不是标准的C++格式,enumInstance已经是一个MyEnum类型的了,所以直接用MyEnum的值就行了,所以C++文件去掉命名的,直接用值即可
#include "MyClass.h" void Foo() { enumInstance = SomethingElse; }
参考文章
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/276.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!