如何在Android上的C ++构造函数中失败

时间:2018-02-13 14:13:12

标签: android c++ android-ndk

我在一些C ++ Android NDK代码中有一个构造函数,用于更大的Android项目。这个构造函数缺少一些参数的简单边界检查,我已经添加了。如果它们无效,则对象初始化没有意义。不幸的是,似乎例外not supported in the NDK 。返回NULL也未被编译器接受(我在启用-Wreturn-type时出现错误),无论如何它似乎都是错误的。

This answer提供了其他信号失败方式的概述,如果例外不是一个选项,但因为它们都非常hacky。由于android NDK没有提供异常,我认为它可能提供一些其他方法。是这样的,还是我不得不求助于hacky?

2 个答案:

答案 0 :(得分:3)

从您的链接:

  

随android ndk提供的默认提供的gcc版本不支持例外。

答案真的过时了。 latest ndk(r16b)完全支持例外。

答案 1 :(得分:0)

由于如果无法打开文件,对象完全无效,一个选项可能是使用Factory Method Pattern和类似于NullObject模式的内容。

(但是,我建议不要将其称为“NullObject”,而是使用“InvalidObject”或“IOErrorObject”。)

通过这种方式,无论构造函数调用可能失败,您始终都会返回一个有效对象。另一个好处是,这种技术还可以简化您的调用代码,因为它有助于避免空值检查。