En primer lugar, este código no se compilará porque se le olvidó el punto y coma después de cada declaración de variables miembro y después de MyItem
declaración y la palabra clave "estructura" está escrito mal El código debería tener este aspecto:
struct MyItem
{
var value;
MyItem* nextItem;
};
MyItem item = new MyItem;
Ahora respondiendo a su pregunta, este código no funciona debido a que el nuevo operador devuelve un puntero al objeto creado (un valor de tipo MyItem*
) y que está tratando de asignar este puntero a una variable del tipo MyItem
. El compilador no te permite hacer esto (porque el valor y la variable tienen diferentes tipos). Debe almacenar el puntero en una variable adecuada exploración, así:
MyItem* item = new MyItem;
En este caso, hay que recordar a delete item
para evitar la pérdida de memoria una vez que ya no lo necesita.
Como alternativa, puede crear el objeto en la pila sin el operador new
.
MyItem item;
En este caso, el objeto deja de existir cuando la función retorna; no necesita recordar borrarlo.
He intentado * artículo. pensar el espacio entre las cosas?Los servidores de Linux simplemente se bloquearon y tendré que esperar a que vuelvan a aparecer antes de que pueda probarlo con el espacio entre * y el elemento. – kralco626
@kralco: No, no importa. ¿Tienes un libro introductorio de C++? – GManNickG
No. Estoy tomando una clase de sistema operativo. He tomado un montón de clases de programación en Java y usé C# y sigo trabajando extensamente. sin embargo, ninguno de esos lenguajes utiliza punteros como C/C++. Esto es solo parte de un proyecto más grande con la implementación de un programa que hace pipelining (aunque Linux lo tiene incorporado). tengo todo escrito y obtengo solo este error. – kralco626