我正在一個C++類的任務之一是:C++自制異常處理失敗
他們給了我們一個主程序,我們不得不把它寫後面的代碼。下面是該代碼:
vector<int> iv(4);
iv[3]=42;
cout << iv[3] << endl; // prints "42"
try {
cout << iv[1] << endl; // throw exception
}
catch (vector<int>::Uninitialized&){
cout << "Uninitialized vector element!" << endl;
}
return 0;
我來到了這個代號爲載體模板:
T* data;
unsigned int size;
public:
class Uninitialized{};
explicit vector(int size) {
data = new T[size];
this -> size = size;
for (unsigned i = 0; i < size; i++) {
data[i] = 0;
}
}
~vector() {
delete [] data;
}
T& operator[](int index) {
if (index >= size) {
abort();
}
return data[index];
}
friend ostream& operator<< (ostream& o, const T& t) {
if (t == 0)
throw Uninitialized();
else
return o << t;
}
然而,朋友方法不會被調用,所以異常被拋出從來沒有。
你完全正確的,這是一個新手的錯誤過目這一點。 謝謝您的回覆! –