Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C++] Problema di derivazione, può la classe madre comportarsi in base alla figlia

    ciao a tutti,
    chiedo scusa per il titolo un pò lungo ma non sapevo come enunciare il problema!
    Allora, vi spiego la mia situazione:
    ho una classe madre che ridefisce gli operatori +, - * e /, e due classi figlie che da esse ereditano. preciso che non posso sovrascrivere gli operatori della classe madre nelle classi figlie! all'interno di questi operatori chiamo una funzione che ha bisogno di una stringa che indica il nome della classe figlia ed io ho pensato di fare una cosa del genere:
    nella classe madre
    codice:
    #ifndef PIPPO
    #define PIPPO "bo"
    
    class madre{
     madre operator + (non badiamo){
      myfunc(std::string(PIPPO))
     }
    }
    nelle classi figlie rispettivamente:
    codice:
    #ifdef PIPPO
    #undef PIPPO
    #else
    #define PIPPO "figlia1"
    #endif
    e


    codice:
    #ifdef PIPPO
    #undef PIPPO
    #else
    #define PIPPO "figlia2"
    #endif
    perchè non funziona??? che castroneria ho scritto?????? help me!!

    Marco
    warcomeb - IL LEADER O.O.O.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Mi sembra un problema simile a questo.
    http://forum.html.it/forum/showthrea...readid=1257008

  3. #3
    credo possa andare... faccio una prova e poi ti faccio sapere!!!


    Marco
    warcomeb - IL LEADER O.O.O.

  4. #4
    purtroppo non va...
    forse mi sono dimenticato di dire un particolare :
    l'operatore nella classe madre è scritto fuori dalla classe in questo modo(nell'header) e non c'è la dichiarazione all'interno della classe:
    codice:
    inline
    const madre
    operator + (const madre& a, const madre& b){
      myfunc(get_string());
    }
    dove la funzione get_string() è la funzione virtual che ho messo all'interno della classe madre e sovrascritto nelle figlie. ma il tutto non funziona
    quello che il compilatore mi dice è:
    codice:
    In function 'const madre operator + (const madre& a, const madre& b)':
    'get_string' was not declared in this scope
    per favore help me !!!
    warcomeb - IL LEADER O.O.O.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Semmai dev'essere:
    codice:
    inline
    const madre
    operator + (const madre& a, const madre& b){
      myfunc(a.get_string());
    // oppure 
      myfunc(b.get_string());
      return (???)
    }
    ed in genere l'operator+ è friend.
    Solo non capisco che vuoi sommare. Stringhe? Numeri?
    Cosa deve tornare la riga rossa?

  6. #6
    premetto che le classi non le ho scritte io www.systemc.org !!!!
    comunque il return c'era, mi sono dimenticato di metterlo, sorry!!
    quello che devo sommare solo oggetti di una classe che rappresentano numeri fixed point!!!
    ho provato con la soluzione proposta ma mi dice:
    codice:
    In function 'const madre operator + (const madre& a, const madre& b)':
    passing 'const madre' as 'this' argument of 'virtual get string()' discards qualifiers
    non so cosa fare!!!!!!!
    warcomeb - IL LEADER O.O.O.

  7. #7
    comunque si, all'interno della classe è dichiarato friend!!
    warcomeb - IL LEADER O.O.O.

  8. #8
    nessuno mi da un consiglio??? please!!!!!!!!
    warcomeb - IL LEADER O.O.O.

  9. #9
    un illuminato del c++ mi ha risolto l'enigma ed io lo posto, magari esce utile a qualcuno e non perde giorni di vita come me!!!!!

    allora abbiamo aggiunto una classe virtual all'interno della classe madre che stampasse il typeid chimato sul this... attenzione però, questa classe virtual è stata dichiarata const dato che gli elementi all'interno dell'operatore erano const. Da qui all'interno dell'operatore è stata inserita la chiamata alla funzione virtuale. così facendo viene stampata una stringa piena di roba ma che contiene anche il nome della classe figlia che tramite find() è possibile recuperare...
    che faticaccia ed il tutto grazie avviamente all'RTTI!!!!!

    grazie a tutti e scusate il disturbo!!!!

    Marco
    warcomeb - IL LEADER O.O.O.

  10. #10
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Occhio che se è una stringa ottenuta col typeid, ciò che esce dipende dal compilatore.

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.