Problem? Tzn? Nie kompiluje, nie kopiuje? Poza tym skąd mamy wiedzieć czym jest ten WektorInt? Jakiekolwiek informacje poza "mam problem, napraw"?
Tak ja ci napisał @obl - nic nie kopiujesz, a jedynie przekazujesz wskaźniki z kopiowanego obiektu do nowego. Problem w tym, że ,jak mi sie wydaje, wszystko co było pod wskaźnikami jest usuwane w destruktorze. Tak więc jeśli któryś z obiektów zostanie zniszczony, wszystkie pozostałe też tracą swoje dane.
Napisałem podobną klase. Kopiuje wszystko jak trzeba, ale program crashuje sie na końcu, wiec cos jest nie tak. Niestety nie jestem w stanie znaleźć błędu. Mimo wszystko może cie naprowadzi na jakiś tor...
struct Con
{
struct Node
{
Node* next;
int val;
};
Node* start;
Con() : start(nullptr)
{
for(int i=0; i<30; i++)
{
start = create(start);
}
}
~Con()
{
Node* ptr = start;
while(ptr)
{
delete ptr;
ptr = ptr->next;
}
}
Con(const Con& _other) : start(new Node)
{
*start = *(_other.start);
Node* otherItr = _other.start;
Node* itr = start;
while(otherItr->next)
{
itr->next = new Node;
*(itr->next) = *(otherItr->next);
otherItr = otherItr->next;
itr = itr->next;
}
}
void show()
{
Node* ptr = start;
while(ptr)
{
std::cout << ptr->val << '\n';
ptr = ptr->next;
}
}
friend Con::Node* create(Con::Node* w_nastepny)
{
Con::Node* nowy = new Con::Node;
nowy->val = rand() % 100;
nowy->next = w_nastepny;
return nowy;
}
};