при выполнении программы (перед завершением)
выдает Fault: acces violation at 0x43408a
ead of address x20a0003f
сразу подозрение падает на деструкторы, но понять не могу...
Код: Выделить всё
#include <vector>
#include <iostream.h>
#include <iomanip.h>
#include <constrea.h>
using namespace std;
class abObject
{
private:
unsigned short id;
int bActive;
void * data;
public:
abObject();
abObject(const abObject &o){id=o.id;bActive=o.bActive;}
abObject(unsigned short i){id=i;bActive=1;}
~abObject();
void activate(){bActive=1;}
void setId(unsigned short i){id=i;bActive=1;}
friend ostream& operator << (ostream& ,abObject&);
friend istream& operator >> (istream& ,abObject&);
};
ostream& operator << (ostream& os,abObject & o)
{
if(o.bActive)os<<"Object id:"<<o.id<<endl;
else os<<"Object is disabled"<<endl;
return os;
}
istream& operator >>(istream& is, abObject& o)
{
is>>o.id;
o.bActive=1;
return is;
}
abObject::abObject()
{
bActive=0;
data=NULL;
}
abObject::~abObject()
{
if(data) delete data;
}
void main()
{
vector <abObject> vo ;
int i;
clrscr();
abObject a1(11),a2(22),a3(33);
vo.push_back(a1);
vo.push_back(a2);
vo.push_back(a3);
cout<<"size:"<<vo.size()<<endl;
for(i=0;i<vo.size();i++) cout<<vo[i];
cout<<endl;
cin.get();
}