1. Zmienna var jest niezainicjalizowana. Jeżeli jej nie ustawisz to destruktor struktury może wywalić program.
2. Wyciek pamięci nastąpi jeżeli drugi raz prześlesz dane do struktury.
Po wprowadzeniu delikatnych zmian powinno działać bezproblemowo.
#include <iostream>
struct in {
double* var=nullptr;
~in() {
delete var;
}
};
std::istream & operator >> (std::istream & is, in &v) {
if (v.var == nullptr)
v.var = new double;
is>>*v.var;
return is;
}
using namespace std;
int main() {
in obj;
cin>>obj;
cout <<*obj.var<< endl;
return 0;
}