Główny problem polega na tym, że nie wiem w jaki sposób sprawić, żeby dwie struktury mogły się ze sobą komunikować.
Posiadam strukturę główną (lista jednokierunkowa) wypełnioną danymi name, age
, i chciałbym przekopiować wszystkie name
do struktury docelowej (również listy jednokierunkowej).
Jak poprawnie napisać taką funkcję CopyMainToTarget
? Próbowałem:
#include <iostream>
#include <string>
struct MainStruct { // struktura główna
MainStruct *next;
std::string name;
int age;
};
struct TargetStruct { // struktura docelowa
TargetStruct *next;
std::string name; // wartości name powinny być te same co w MainStruct,
// ale zaalokowane w osobnych komórkach pamięci
};
// dodaje do struktury glownej
void AddToMain(MainStruct *&head, const std::string &name, const int &age)
{
head = new MainStruct {head, name, age};
}
// tutaj mam problem
void CopyMainToTarget(TargetStruct *&head)
{
head = new TargetStruct {head, head->name};
}
int main()
{
MainStruct *main_ptr = nullptr;
AddToMain(main_ptr, "Zosia", 24);
AddToMain(main_ptr, "Karol", 33);
AddToMain(main_ptr, "Marek", 25);
// do tej pory wszystko dziala
TargetStruct *target_ptr = nullptr;
CopyMainToTarget(target_ptr);
}
Ten kod nie ma sensu, ale jest to jedyny który się skompilował. : D Nie widzę w jaki sposób funkcja CopyMainToTarget
miałaby się komunikować z MainStruct
.
Próbowałem również:
void CopyMainToTarget(MainStruct *&head)
{
head = new TargetStruct {head, head->name};
}
i inne kombinacje, ale wywala przeróżne złożone błędy.
Dla mnie to czarna magia, a myślę że rozwiązanie jest proste. Jak przekopiować dane z MainStruct
do TargetStruct
? Jak przekazywać poprawnie strukturę do funkcji? Jak zrobić aby obie struktury mogły się w funkcji komunikować?