#include <vector>
#include <iostream>
#include <algorithm>
class A
{
public:
int* p;
A() : p() {}
A(int _) : p(new int(_)) {}
A(const A& a) {
p = new int(*a.p);
}
virtual ~A() {
delete p;
}
};
void dump(const A& a)
{
std::cout << *a.p << std::endl;
}
int main()
{
std::vector<A> v;
v.push_back(A(1));
v.push_back(A(2));
v.push_back(A(3));
v.erase(v.begin());
std::for_each(v.begin(), v.end(), dump);
// Вывод в косоль:
// 2
// 94734286 (мусор)
// Хотя ожидалось
// 2
// 3
// Что случилось?
// Как исправить?
std::cin.get();
return 0;
}
md := MyData(data) // или md := (MyData)(data) что вроде одинаково
md.PrintDataEx()
md := (MyData*)(&data)