有時,當我用C++編程時,我希望每個變量都有一個undefined
的值,比如Javascript !. 例如,當我再次回到了陣外的界限元素的值,它是有用的返回undefined
,而不是拋出一個異常,或:返回無效的引用
template <typename T, int SIZE>
class MyArray
{
T arr[SIZE];
static T badref;
public:
T &operator[](int i)
{
if (i >=0 && i < SIZE)
return arr[i];
else
throw std::string("OUT-OF-BOUNDS"); // or: return badref; !!
}
};
另一個骯髒的(在我看來)選項將返回一個預定義變量的引用作爲不良引用變量。我知道我們不能將null
或類似的東西分配給參考變量。
是否有另一個格式良好的模式返回引用,其中調用者有能力找出返回的值是無效的?
編輯:我不是指pointer
是的,它被稱爲指針。或者,'boost :: optional'。 – chris
至少讓你的badref對象靜態,那麼它不會佔用你創建的每個MyArray的空間。但我同意,這很醜陋。在這樣的泛型代碼中,我寧願拋出異常 – john
@john:是的,我編輯了它。 – deepmax