Dlaczego catch w tym programie nie przechwytuje wyjątku, a przynajmniej nie wyświetla komunikatu?
#include "stdafx.h"
#include <iostream>
using namespace std;
#pragma warning(disable:4290)
#define DECLARE(x) int* tabx##=new int
const int sizet=20;
class klasa{
public:
class myException:public bad_alloc{
klasa* kl;
public:
myException(klasa* l1):bad_alloc(),kl(l1){}
klasa* get(){return kl;}
};
void* operator new(size_t size,bool w) throw(bad_alloc){
int** tab=new int*[sizet];
for(int i=0;i<12;i++){
tab[i]=new int;
if(i==10&&w==true) throw myException(&klasa());
return tab;
}
}
static void* przydziel(klasa* k,int j){
k=new(false) klasa;
return k;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
try{
klasa* k=new(true) klasa;
delete k;
}catch(klasa::myException& b){
cout<<b.what()<<endl;
klasa* k=b.get();
k=new(false) klasa;
}
}