Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Akkawe
    Registrato dal
    Dec 2011
    Messaggi
    12

    [c++] copiare oggetti di classe derivate

    Salve,
    ho questo problema, vorrei copiare (ad esempio, mediante un ciclo for) un oggetto di una classe derivata senza sapere specificatamente di che classe derivata sia.
    Cioe' una funzione che copia l-oggetto derivato che gli passo, qualunque esso sia.
    Es.
    classe base Forma
    classe astratta Rettangolo
    classe astratta Quadrato

    E' possibile scrivere una sola funzione che se passata ad esso un oggetto di Rettangolo lo copia n-volte, se passato un oggetto di Quadrato lo copia n-volte?

    Ho implementato nella classe base e astratta un copy constructor.
    Nel main ho bisogno di capire come scrivere questa funzione senza specificare a priori se e' Rettangolo o Quadrato.
    E' possibile?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Copiare dove? In un altro oggetto? Un array?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Con i template.

  4. #4
    Utente di HTML.it L'avatar di Akkawe
    Registrato dal
    Dec 2011
    Messaggi
    12
    Ho implementanto una funzione clone() in ogni classe derivata che alloca memoria e chiama il copy contructor:
    codice:
    Quadrato* Quadrato::clone() const{
    	return new Quadrato(*this);
    il copy constructor nella classe derivata:
    codice:
    Quadrato::Quadrato(const Quadrato&m_Quad):Forma(m_Quad){
    //....
    }
    Spero possa essere d'aiuto o fonte di discussione.

    p.s.
    grazie ramy, ora provo a studiare il link che mi avevi dato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.