Przede wszystkim, ten kod nie będzie kompilować, ponieważ zapomniał średników po każdym państwie deklaracji zmiennej i po MyItem
deklaracji i słów kluczowych „struktury” jest źle napisane. Kod powinien wyglądać następująco:
struct MyItem
{
var value;
MyItem* nextItem;
};
MyItem item = new MyItem;
Teraz odpowiadając na pytanie, ten kod nie działa, ponieważ nowy operator zwraca wskaźnik do obiektu utworzonego (wartości typu MyItem*
) i próbujesz przypisać ten wskaźnik do zmiennej typu MyItem
. Kompilator nie pozwala na to (ponieważ wartość i zmienna mają różne typy). Należy przechowywać wskaźnik do zmiennej odniesieniu do odpowiednich, tak:
MyItem* item = new MyItem;
W tym przypadku należy pamiętać, aby delete item
aby uniknąć wycieku pamięci po więcej nie potrzebują.
Alternatywnie można utworzyć obiekt w stosie bez operatora new
.
MyItem item;
W takim przypadku obiekt przestaje istnieć po powrocie funkcji; nie musisz pamiętać, aby go usunąć.
Próbowałem * przedmiot. myślisz o przestrzeni pomiędzy sprawami?Serwery linuksowe po prostu uległy awarii. Będę musiał poczekać, aż wrócą, zanim będę mógł spróbować, używając spacji między tym * a elementem. – kralco626
@kralco: Nie, to nie ma znaczenia. Czy masz wstępną książkę C++? – GManNickG
Nie. Biorę klasę systemów operacyjnych. Zrobiłem mnóstwo zajęć programistycznych w Javie i użyłem C# i nadal pracuję intensywnie. jednak żaden z tych języków nie używa wskaźników takich jak C/C++. Jest to tylko część większego projektu z implementacją programu, który wykonuje pipelining (nawet jeśli wbudowany jest system Linux). Mam wszystko napisane i dostaję właśnie ten błąd. – kralco626