今天在给安卓打包的时候出现了这个错误is not a class or namespace,截图如下

屏幕快照 2016-03-24 19.59.16.png

查看cpp文件的相应的一行是这样写的</p><p style="text-align:center;"><a target="_blank" href="http://www.hudongdong.com/content/uploadfile/201603/82231458828517.png" id="ematt:694"><img src="http://www.hudongdong.com/content/uploadfile/201603/82231458828517.png" title="点击查看原图" alt="屏幕快照 2016-03-24 22.04.29.png" border="0" width="600" height="257"/></a> </p><p style="text-align:left;">
这一行是调用了一个enum的,也就是说报的错误是enum的错误,这个在c++中可以识别,但是java就报错</p><p style="text-align:center;"><a target="_blank" href="http://www.hudongdong.com/content/uploadfile/201603/c0ef1458828607.png" id="ematt:695"><img src="http://www.hudongdong.com/content/uploadfile/201603/c0ef1458828607.png" title="点击查看原图" alt="屏幕快照 2016-03-24 22.05.54.png" border="0" width="428" height="224"/></a> </p><p style="text-align:left;">
这个在Xcode上面运行c++语言都是可以通过的,但是java转换的不行。</p><p style="text-align:left;">
解决方案就是直接调用enum里面的,类似于我的第一张图片的出错,就是直接用MHero::KCondAwa就行了,不要用MHero::conditionType::KCondAwa。</p><p style="text-align:left;">
当然这个说的是因为enum的原因,如果是其他原因导致的,你就需要查查是不是没有引入文件对应的命名空间,比如using namespace std;以及头文件是否引入正确。</p><h2 style="text-align:left;">
续</h2><p style="text-align:left;">
类似的原因,我在stackoverflow上面搜到了相似的问题<span style="line-height:1.5;"></span></p><p style="text-align:left;">
问题是这样的</p><p style="text-align:left;">
头文件</p><p style="text-align:left;"></p><pre class="prettyprint lang-cpp linenums">enum&nbsp;MyEnum&nbsp;{

    Something = 0, 
    SomethingElse = 1
};

class MyClass {
    MyEnum enumInstance;
    void Foo();
};

在c++文件</p><p style="text-align:left;"></p><pre class="prettyprint lang-cpp linenums">#include&nbsp;&quot;MyCode.h&quot;

void MyClass::Foo() {
    enumInstance = MyEnum::SomethingElse;
}

因为这个MyEnum::SomethingElse并不是标准的C++格式,enumInstance已经是一个MyEnum类型的了,所以直接用MyEnum的值就行了,所以C++文件去掉命名的,直接用值即可

 #include "MyClass.h"

 void Foo() {
     enumInstance = SomethingElse;
 }

<br/>参考文章

  1. My enum is not a class or namespace

Last modification:January 1st, 1970 at 08:00 am
如果觉得我的文章对你有用,请随意打赏: ☞已打赏列表