Agregar un objeto a otro conjunto de objetos en C++

Estoy trabajando en mi tarea en el curso de C++.

Tengo que crear operator+= que agregará un objeto a otro conjunto de objetos.

Entonces, ¿cómo implemento operator+= aquí?

class classNew
{
    anotherClass *my_objects;
public:
    // TODO: classNew(int, char const *)
    classNew operator+=(const anotherClass & rhs);
};

int main()
{
    classNew d1(7, "w");
    anotherClass sgs[5];
    // somehow init sgs[0]..[4]?

    for (int i=0; i<sizeof(sgs)/sizeof(*sgs); ++i)
        d1 += sgs[i];
}

ACTUALIZACIÓN:

Tengo algo como esto

newClass newClass::operator+=(const anotherClass& seg){

this->my_objs[n_seg] = seg;

return *this;

}

preguntado el 27 de julio de 12 a las 17:07

¿Cómo se agregaron sin +=? -

Ponga una muestra de código limpia que muestre lo que tiene hasta ahora, es difícil entender lo que quiere de la escritura aquí. Puede mantener la pregunta como está, agregar el código debería aclararnos :) -

He agregado una traducción de código literal de la declaración de su problema, ¿es correcto? -

Si la versión del código es precisa, eliminaré el texto anterior: el código IMO se describe mejor por código:

Si hay algo omitido, ¡agréguelo al código! -

1 Respuestas

A menos que su operator+= tiene la intención de modificar el objeto que está agregando, lo cual sería muy inusual, sugeriría . dos simples cambios en la firma:

classNew & classNew::operator+=(const anotherClass& rhs);

Siempre quieres devolver un referencia a la clase, de lo contrario obtienes una copia.

Tienes un puntero para anotherClass en su clase, supongo que esto es en realidad un puntero a una matriz. Simplemente tienes que copiar el aprobado rhs al lugar apropiado en su conjunto, reasignándolo y haciéndolo crecer si es necesario. Si mi suposición es incorrecta, solo necesita hacer cualquier adición definida para su clase.

Si esto no fuera una tarea, también sugeriría reemplazar el puntero con un std::vector<anotherClass>.

Respondido 27 Jul 12, 17:07

Hola @Mark, gracias por la respuesta aquí. He actualizado un poco mi pregunta sobre lo que he escrito hasta ahora para mi operator+= pero no estoy seguro si ese es el camino correcto. - Ali

@Ali, la actualización de tu código se ve bastante bien, pero considera lo que n_seg debiera ser. - marca rescate

@MarkRansom casi he hecho el rhs objeto para ser const similar a tu sugerencia. - Ali

Estoy de acuerdo, no parece que tenga un problema a menos que n_seg no sea <= length(myObjects) - 1 (tenga en cuenta que C ++ no tiene una función de longitud, pero entiende la idea: P) - Juan Humphreys

@MarkRansom Estoy un poco confundido con esto. Entonces, digamos que solía tener 10 objetos delacare, luego quiero agregar el de main para convertirlo en 11 objetos, así que solo use como this->my_objs[n_seg] = seg; esto va a funcionar? - Ali

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.