0
我有類C++引發異常
template <class T>
class Box {
public:
Box() : size(2), count(0) {
arr = new T[size];
}
void add(T);
T operator[](int);
private:
int size;
int count;
T * arr;
};
操作符[]功能
template <class T>
T Box<T>::operator[](int index) {
if (index >= count)
throw "Index out of bounds";
return arr[index];
}
在主功能,我首先添加一個元件使用add
功能框。然後我試圖通過box[0]
得到它,它工作正常。因爲沒有第二個元素,所以我想要在執行box[1]
時拋出異常。但沒有拋出異常,它給了我這個錯誤:
Exception thrown at 0x7701DAD8 in Project24.exe: Microsoft C++ exception: char at memory location 0x0018F8A8.
If there is a handler for this exception, the program may be safely continued.
我有一個異常處理程序。爲什麼我得到這個錯誤?
編輯:我打開了一個新的項目,複製所有文件,並改變了功能operator[]
作爲
template <class T>
T Box<T>::operator[](size_t index) {
string s("Index out of bounds");
if (index >= count)
throw s;
return arr[index];
}
它現在。
您應該創建完整的,最小的和可驗證的示例。 http://stackoverflow.com/help/mcve – user31264
問題可能是你扔了一個const char *並且它在內存方面並不是很安全?嘗試拋出一個std :: string – NoImaginationGuy
您是否在VS調試器中運行調試會話? –