簡體   English   中英

如何在Android上的C ++構造函數中失敗

[英]How to fail in a C++ constructor on Android

我在一些C ++ Android NDK代碼中有一個構造函數,該代碼在較大的Android項目中使用。 該構造函數缺少對某些參數的簡單邊界檢查,這是我添加的。 如果它們無效,則對象初始化沒有意義。 不幸的是, NDK似乎不支持例外。 返回NULL也不被編譯器接受(由於啟用了-Wreturn-type我得到了一個錯誤),無論如何似乎還是錯誤的。

此答案概述了如果不是不可選項的話,則可以通過其他方式來指示失敗的信號,但是它們都是很容易破解的。 由於android NDK不提供異常,因此我認為它可能提供其他方法。 是這種情況,還是我不得不求助於某些駭人聽聞的東西?

從您的鏈接:

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

這個答案真的過時了。 最新的ndk (r16b)完全支持例外。

由於如果無法打開文件,則對象完全無效,因此一種選擇可能是使用Factory Method Pattern和類似於NullObject模式的東西。

(但是,我建議不要使用“ InvalidObject”或“ IOErrorObject”,而不是將其稱為“ NullObject”。)

這樣,無論構造函數調用可能失敗,您總是會取回有效對象。 另一個好處是,該技術還可以簡化調用代碼,因為它有助於避免空檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM