|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
[C++] Dubbi su "this"
Ciao.
Ho una classe con una funzione membro che deve chiamare una funzione che necessariamente non deve esser parte di alcuna classe. Però questa funzione esterna deve chiamare funzioni membro per fare dei conti. Ho risolto così: Creo un namespace BubbleDew dove passo alla funzione esterna alcuni dati e un puntatore all'oggetto chiamante: Codice:
class Mixture; namespace BubbleDew { enum WhichCalculation { BubblePressure, BubbleTemp, DewPressure, DewTemp }; extern double T; extern double P; extern BzzVector xLiq; extern BzzVector yVap; extern WhichCalculation check; extern Mixture* mix; } Codice:
void funsys_Td(BzzVector& z, BzzVector& f) { if (BubbleDew::check != BubbleDew::DewTemp) ; // TODO Error, wrong function call double T = z[1]; BzzVector xLiq(z); xLiq.DeleteElement(1); double& P = BubbleDew::P; BzzVector& yVap = BubbleDew::yVap; Mixture* mix = BubbleDew::mix; PhiMix vap = mix->compute_phi(T, P, yVap, PR); PhiMix liq = mix->compute_phi(T, P, xLiq, PR); [CUT] } DewT Mixture::compute_dew_T_direct(const double& P, const BzzVector& yVap) { if (yVap.Size() != nSpecies) ;// TODO Error BubbleDew::yVap = yVap; BubbleDew::P = P; BubbleDew::check = BubbleDew::DewTemp; BubbleDew::mix = this; [CUT] } Ultima modifica di vendettaaaaa : 10-12-2012 alle 15:07. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Up! Ho riletto il post e mi sembra scritto in modo conciso e comprensibile, con una capacità di sintesi che raramente mi caratterizza; pure il codice postato son due definizioni in croce, niente di complicato, su su qualcuno mi aiuti!
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Ultimo up, poi ci rinuncio
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:00.