Due giorni e due notti la mia mente curiosa e le mie mani birichine mi hanno tenuto occupato
provato a rimuovere l'oggetto creato dinamicamente fuori dall'ambito - nella funzione, metodo gut feeling, ma alla fine sono arrivato alla soluzione:
che lo cancella, ma non riesco a capirlo così.... e non sono riuscito a trovare nessuna firma di funzione simile per il passaggio di puntatori in help o sat
Cosa vuol dire che è fuori portata? L'hai passato in una funzione, quindi è visibile lì)
s.s.void deleteCTest(CTest* &t) senza quel & dovrebbe funzionare anche, giusto?
Per rimuoverlo davvero al di fuori dell'ambito in cui è stato creato, e possibilmente in modo automatico, è necessario... shh... prima che qualcuno senta... Pattern Factory... leggere più velocemente e cancellare...
s.w.void deleteCTest(CTest* &t) senza questo & dovrebbe funzionare anche, o no?
controlla, imparerai qualcosa di nuovo ;)
Ho scritto molte volte che i puntatori MQL sono una cosa molto istruttiva ))))
Vladimir Simakov: Se vuoi il kosher, non ancora, ma se è così:
Se volete usare un puntatore, la classe deve avere un costruttore di copia.
Di nuovo, ho bisogno di pensare
Ho il sospetto che GetPointer() possa fare qualche trucco... ma non è un fatto.... Questi "salti nello spazio e nel tempo" - tramite puntatore e dereferenziazione implicita in MQL - sono fuori di testa! (((
Vi ho detto più e più volte che i puntatori in MQL sono molto istruttivi ))))
Di nuovo, ho bisogno di pensare
Ho il sospetto che GetPointer() possa fare qualche trucco... ma non è un fatto.... Questi "salti nello spazio e nel tempo" - tramite puntatore e dereferenziazione implicita in MQL - sono fuori di testa! (((
Va bene qui)))) Basta spegnere lo sharpe, non c'è nemmeno un accenno qui))))
Non è un esempio completo, mi ci sono imbattuto oggi.
non funzionerà così senza &
Certo che lo farà. State passando un puntatore per valore, quindi verrà creata una copia del puntatore. Lo userete per inchiodare l'oggetto e creare un nuovo oggetto per il puntatore che è stato creato nella funzione. Questo è c++, benvenuto))))
Secondo me, non ha niente a che vedere con i riferimenti, ma solo con il fatto che l'argomento della funzione deve essere passato per puntatore se volete che salvi il valore dopo l'esecuzione della funzione. Lo stesso accadrà con un file o un handle di indicatore, per esempio, che non sono riferimenti.
Questo è sempre stato lo standard in C++, anche se è passato molto tempo da quando lo ricordo vagamente.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Non ci sono puntatori qui) C'è un handle per la classe, e lavorare con esso è simile a lavorare con un puntatore, ma qui finisce il terreno comune.
La mia mente curiosa e le mie mani birichine mi hanno tenuto occupato per due giorni e due notti
Ho provato a rimuovere l'oggetto creato dinamicamente fuori dall'ambito - nella funzione, metodo groping, ma alla fine ho ottenuto la soluzione:
che lo cancella, ma non riesco a capirlo così.... e non ho trovato nessuna firma di funzione simile per passare i puntatori
Ecco un'altra domanda:
come posso restituire un puntatore a un oggetto per riferimento come risultato di una funzione?
Voglio fare qualcosa del genere:
CTest ret_CTest() { CTest *result = new CTest; return(result); }è possibile restituireCTest * senza problemi, ma come ho scritto ret_CTest() - dà un errore
Due giorni e due notti la mia mente curiosa e le mie mani birichine mi hanno tenuto occupato
provato a rimuovere l'oggetto creato dinamicamente fuori dall'ambito - nella funzione, metodo gut feeling, ma alla fine sono arrivato alla soluzione:
che lo cancella, ma non riesco a capirlo così.... e non sono riuscito a trovare nessuna firma di funzione simile per il passaggio di puntatori in help o sat
Cosa vuol dire che è fuori portata? L'hai passato in una funzione, quindi è visibile lì)
s.s.void deleteCTest(CTest* &t) senza quel & dovrebbe funzionare anche, giusto?
Per rimuoverlo davvero al di fuori dell'ambito in cui è stato creato, e possibilmente in modo automatico, è necessario... shh... prima che qualcuno senta... Pattern Factory... leggere più velocemente e cancellare...
Igor Makanu:
ma come restituire un puntatore a un oggetto per riferimento come risultato di una funzione?
si può restituireCTest * senza problemi, ma come ho scritto ret_CTest() - dà un erroreSe una classe ha un costruttore di copia, allora dovrebbe avere un costruttore di copia.
s.w.void deleteCTest(CTest* &t) senza questo & dovrebbe funzionare anche, o no?
controlla, imparerai qualcosa di nuovo ;)
Ho scritto molte volte che i puntatori MQL sono una cosa molto istruttiva ))))
Se vuoi il kosher, non ancora, ma se è così:
Se volete usare un puntatore, la classe deve avere un costruttore di copia.
Di nuovo, ho bisogno di pensare
Ho il sospetto che GetPointer() possa fare qualche trucco... ma non è un fatto.... Questi "salti nello spazio e nel tempo" - tramite puntatore e dereferenziazione implicita in MQL - sono fuori di testa! (((
controlla, imparerai molto ;)
Ho scritto molte volte che i puntatori in MQL sono una cosa molto istruttiva ))))
Cancella i puntatori ma non può assegnare un nuovo valore a _test. A proposito, MQL non ha niente a che fare con questo)))
controlla, imparerai molto ;)
Vi ho detto più e più volte che i puntatori in MQL sono molto istruttivi ))))
Di nuovo, ho bisogno di pensare
Ho il sospetto che GetPointer() possa fare qualche trucco... ma non è un fatto.... Questi "salti nello spazio e nel tempo" - tramite puntatore e dereferenziazione implicita in MQL - sono fuori di testa! (((
Va bene qui)))) Basta spegnere lo sharpe, non c'è nemmeno un accenno qui))))
controlla, imparerai molto ;)
Vi ho detto più e più volte che i puntatori in MQL sono molto istruttivi ))))
Ho controllato. Si cancella bene senza &)
Ho provato in MT4 e MT5 e confrontare)
Ben controllato. Si cancella perfettamente senza &)
Ho provato in MT4 e MT5 e confrontare)
Non è un esempio completo, l'ho incontrato oggi.
Non funzionerà senza & .
Sto bene qui))) Non sono alla ricerca di sharps ma sono sicuro che funzionerà senza &)).
Non sto cercando Sharp, ho ancora a che fare con MQL, posso chiedere ciò che non capisco.
Non è un esempio completo, mi ci sono imbattuto oggi.
non funzionerà così senza &
non un esempio completo, mi sono imbattuto oggi
non funziona senza &
Secondo me, non ha niente a che vedere con i riferimenti, ma solo con il fatto che l'argomento della funzione deve essere passato per puntatore se volete che salvi il valore dopo l'esecuzione della funzione. Lo stesso accadrà con un file o un handle di indicatore, per esempio, che non sono riferimenti.
Questo è sempre stato lo standard in C++, anche se è passato molto tempo da quando lo ricordo vagamente.