|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
[C++] Warning che non capisco ...
Perchè questa linea mi da un warning ?
Codice:
LLUnit* pUnit = m_UnitHandler->GetEntity("AUDIO"); Quote:
Codice:
LLBaseEntity* GetEntity (string sName) { return SingleTone->GetEntityBase(SingleTone->GetEntityIdBase(sName)); } Codice:
class LLUnit : public LLBaseEntity ![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Se LLUnit deriva da LLBaseEntity devi fare un cast per fare quell'assegnamento (sempre che sia lecito).
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Ma perchè, scusa ? io vorrei proprio evitare un reinterpret_cast che bello non è
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Purtroppo di C++ non so niente, quindi non so dirti quale tipo di cast è necessario, però così mi sembra normale il warning, ti sta dicendo solo che se metti dei frutti in un cesto di mele devi assicurarti che i frutti siano proprio mele.
Se mi sto sbagliando scusami, non voglio sembrare saccente, provo solo a dare una mano. |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]() grazie
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il cast implicito da LLBaseEntity * a LLUnit * non è lecito, devi farlo esplicito. E' illecito perché non hai alcuna garanzia che il puntatore ritornato sia un puntatore a LLUnit.
Al contrario da LLUnit * a LLBaseEntity * è lecito. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Secondo te è "sbagliata" (diciamo criticabile) un'istruzione del genere ? Codice:
LLUnit* pUnit = reinterpret_cast<LLUnit*>(m_UnitHandler->GetEntity("AUDIO")); LLUnitHandler deriva da LLBaseHandler che contiene praticamente tutte le funzioni di handling delle entità tranne un paio di funzioni astratte che vengono implementate nei vari handlers derivati. Boh, secondo me va bene ... ok, reinterpret_cast è una forzatura ma so quello che faccio, non forzo un puntatatore ad una classe a caso. Che poi LLUnit è astratta e chiamando il suo metodo "pure virtual" ExecuteLogic, sfrutto la potenza del polimorfismo. Per me è elegante.
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Usa un dynamic_cast
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Mai usato ... si vede che vengo dal C, vè ?
![]() ok grazie, leggerò qualcosa sui cast.
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
http://www.cplusplus.com/doc/tutorial/typecasting.html Attenzione comunque alla nota scritta lì. E' da verificare nel tuo caso. |
|
![]() |
![]() |
![]() |
#11 | ||
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Ma non dovrebbe essere in grassetto il link al 3d quando qualcuno scrive qualcosa di nuovo ? ![]() Vabbè, grazie del link. Mi da errore in questo caso, cerco di castare da primo a secondo: Codice:
‘void (class LLPanelSEM80_90::*)(class LLMsg_t&, class LLMessage*, struct LL_ACTION_SIGNAL&)’ ‘void (class LLPanel::*) (class LLMsg_t&, class LLMessage*, struct LL_ACTION_SIGNAL&)’ ![]() Errore: Quote:
Codice:
typedef void (LLPanel::*PanelLogicFunctions)(LOGIC_FUNCTIONS_PARAMS); ... PanelLogicFunctions m_Functions[SEM80_90_DEV_FUNCTIONS]; //!< Panels' devices' functions ... m_Functions[0] = dynamic_cast<PanelLogicFunctions>(&LLPanelSEM80_90::Button_Power);
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
||
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Scusa, ma che c'entra il cast di un puntatore a funzione ? Questo non è un cast da un tipo derivato alla classe base. Quei due tipi non sono derivati l'uno dall'altro.
Sinceramente con la programmazione ad oggetti non mi sono trovato molto spesso ad operare con puntatori a funzioni. Probabilmente li puoi evitare. |
![]() |
![]() |
![]() |
#13 | ||
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]() Son fuso ... fortuna che dopo il progetto mi faccio 2 settimane di vacanza. Quote:
E mi ricordo anche che mi hai suggerito di usare i pattern invece dei puntatori a metodo (ho ancora il 3d per il futuro ![]() Comunque non è male come design: ho matrici di pulsanti, lo stesso prototipo di funzione (tipo OnClick) per ogni pulsante e quindi una "matrice" (in realtà array) di puntatori a metodi, uno per ogni pulsante. edit: scusa ma è da molto che volevo chiedertelo: chi è il chitarrista nel tuo avatar ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
||
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Io ogni sera suono Joe Satriani, conosci ?
ho appena finfito di imparare "satch boogie". Ok, non è metallo, ma non è certo musica pop ![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non lo conosco bene, ma le poche cose che ho ascoltato mi sono piaciute. Se sai suonare Satriani allora sai suonare molto bene
![]() |
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Quì suono The Extremist http://www.youtube.com/watch?v=tyqQJi1iWa8 Anche se è di un pò di tempo fa, adesso l'ho migliorata. Vorrei arrivare ad almeno 12-15 pezzi per fare qualche serata ma sono solo a 8 ![]() Vabbè, un pelino OT ![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E stica
![]() ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:54.