如何在C+中失败+;Android上的构造函数 我在一些C++ Android NDK代码中有一个构造函数,它用于一个更大的Android项目中。这个构造函数缺少对一些参数的一些简单边界检查,这是我添加的。如果它们无效,对象初始化就没有意义。不幸的是,似乎有例外。编译器也不接受返回NULL(在启用-Wreturn type时,我得到一个错误),而且它似乎是错误的
提供了一个概述,如果异常不是一个选项,但它们都是相当黑客的信号失败的其他方式。由于androidndk没有提供异常,我认为它可能会提供一些其他方法。是这样的,还是我必须求助于黑客手段?来自您的链接: android ndk提供的默认如何在C+中失败+;Android上的构造函数 我在一些C++ Android NDK代码中有一个构造函数,它用于一个更大的Android项目中。这个构造函数缺少对一些参数的一些简单边界检查,这是我添加的。如果它们无效,对象初始化就没有意义。不幸的是,似乎有例外。编译器也不接受返回NULL(在启用-Wreturn type时,我得到一个错误),而且它似乎是错误的,android,c++,android-ndk,Android,C++,Android Ndk,提供了一个概述,如果异常不是一个选项,但它们都是相当黑客的信号失败的其他方式。由于androidndk没有提供异常,我认为它可能会提供一些其他方法。是这样的,还是我必须求助于黑客手段?来自您的链接: android ndk提供的默认gcc版本不支持异常 这个答案真的过时了。(r16b)中完全支持例外情况。从您的链接: android ndk提供的默认gcc版本不支持异常 这个答案真的过时了。在(r16b)中完全支持异常。因为如果无法打开文件,对象将完全无效,一个选项可能是使用和类似于模式的东西
gcc
版本不支持异常
这个答案真的过时了。(r16b)中完全支持例外情况。从您的链接:
android ndk提供的默认gcc
版本不支持异常
这个答案真的过时了。在(r16b)中完全支持异常。因为如果无法打开文件,对象将完全无效,一个选项可能是使用和类似于模式的东西 (但是,我建议使用“InvalidObject”或“IOErrorObject”,而不是将其称为“NullObject”。)
通过这种方式,无论构造函数调用可能失败,您总是会返回一个有效的对象。另一个好处是,这种技术还可以简化调用代码,因为它有助于避免空检查。因为如果无法打开文件,对象将完全无效,一种选择可能是使用和类似于模式的东西 (但是,我建议使用“InvalidObject”或“IOErrorObject”,而不是将其称为“NullObject”。)
通过这种方式,无论构造函数调用可能失败,您总是会返回一个有效的对象。另一个好处是,这种技术还可以简化调用代码,因为它有助于避免空检查。支持异常(我认为您的链接有点过时),请阅读支持异常(我认为您的链接有点过时),请阅读该答案中的
gcc
,它可能指的是GNU编译器集合,而不是它的C编译器。接得好,谢谢<这个答案中的code>gcc可能指的是GNU编译器集合,而不是它的C编译器。接得好,谢谢!