PLO - pagina 8

 

Come si restituisce un riferimento nei parametri della funzione?

Questo tipo di codice causa problemi:

CMy* obj; // global
bool func(CMy* obj)
{
...
  obj = new CMy();
...
}

Accesso alpuntatore non valido quando si cerca di lavorare con obj.

Ho provato ad aggiungere un &.

bool func(CMy*& obj)

Funziona. Non ho trovato il ritorno di riferimento nei parametri di funzione nella documentazione.

Per analogia, ho trovato questo argomento in C++: http://stackoverflow.com/questions/5286453/returning-a-pointer-as-a-function-parameter

Ma ** non funziona qui. *& al suo posto?

5.00.630 x64

returning a pointer as a function parameter
returning a pointer as a function parameter
  • stackoverflow.com
Im trying to return the data pointer from the function parameter: bool dosomething(char *data){ int datasize = 100; data = (char *)malloc(datasize); // here data address = 10968998
 
flops:

Non ho potuto trovare un ritorno di riferimento nei parametri della funzione nella documentazione.

Vuoi dire questo: Riferimento MQL5 / Fondamenti del linguaggio / Tipi di dati / Riferimenti. Modificatore & e parola chiave questo?
 
flops:

Come si restituisce un riferimento nei parametri della funzione?

Questo tipo di codice causa problemi:

Accesso al puntatore non valido quando si cerca di lavorare con obj.

Ho provato ad aggiungere un &.

Funziona. Non ho trovato il ritorno di riferimento nei parametri di funzione nella documentazione.

Per analogia, ho trovato questo argomento in C++: http://stackoverflow.com/questions/5286453/returning-a-pointer-as-a-function-parameter

Ma il tuo ** non funziona. *& al suo posto?

5.00.630 x64

IMHO (è stato molto tempo fa).

Non si può passare un puntatore attraverso gli argomenti, ma creare un riferimento. Non si può legare una nuova istanza di una classe a un riferimento. Rimane il seguente modo:

CMy* func()
{
...
  CMy* obj;
  obj = new CMy();
  return(obj);
...
}
 
Vigor:

Sono un sostenitore dell'OOP, perché ho capito la comodità di programmare dal basso verso l'alto. Dalle interfacce di interazione degli oggetti all'implementazione delle classi.

Un'interfaccia non è esterna a una classe?
 
220Volt:

IMHO (è stato molto tempo fa).

Non si può passare un puntatore attraverso gli argomenti, si può creare un riferimento. Non potete legare una nuova istanza della classe a un riferimento. Questo ci lascia questa opzione:

Ho definito la domanda in modo errato.

Passare un puntatore per riferimento. Mi sto chiedendo se si può usare la variante *& e non la copriranno nelle versioni successive? In C++, un tale costrutto sembra essere legale.

 
Yedelkin:
Si sta riferendo ad esso: Guida di riferimento MQL5 / Fondamenti del linguaggio / Tipi di dati / Riferimenti. Modificatore & e parola chiave questo?

Vorrei che ci fosse la giusta informazione...


Nell'articolo

https://www.mql5.com/ru/docs/basis/function/ParameterPass

si possono anche aggiungere informazioni sul lavoro con gli oggetti.

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Andrei01:
Un'interfaccia non è esterna alla classe?

Che differenza fa per gli oggetti? Un'interfaccia in questa interpretazione è un tipo di dati, perché la sua descrizione definisce abbastanza chiaramente le proprietà degli oggetti. E, di fatto, definisce il comportamento esterno degli oggetti.

Nei materiali che ho citato, gli oppositori dell'OOP hanno menzionato che è impossibile creare immediatamente la struttura delle classi senza implementare l'algoritmo, che è il motivo per cui l'ambiente OOP pratica così spesso il refactoring e perché le classi ostacolano lo sviluppo con la loro eterna riprogettazione. E questo è davvero vero. Quando si implementa qualcosa di nuovo e non si capisce a cosa può portare, bisogna rifare le lezioni e più di una volta.

Creare una buona architettura di classe è uno scoglio per i principianti. In sostanza, lo scopo della programmazione OOP è quello di scrivere il proprio"linguaggio", un linguaggio che è facile e veloce da creare in futuro. L'interfaccia è l'essenza di un linguaggio che è progettato per il compito. L'interfaccia, infatti, non deve essere intesa come una costruzione "di tipo" della classe, come un contratto per la classe, che deve essere eseguito nel codice (in MQL, non esiste e il ruolo di interfaccia può essere debolmente svolto da metodi virtuali).

Per esempio, si può creare un "linguaggio" per la creazione di nuovi EA che permette di assemblare lo schema generale degli EA da oggetti in poche righe. I segnali e le condizioni possono essere utilizzati già pronti, oppure si possono sviluppare le proprie classi di segnali e creare la propria libreria per analogia. Questa possibilità è fornita da MQL5 Wizard.

Spesso, lo schema dell'applicazione è già stato sviluppato e la "programmazione OOP" si riduce essenzialmente all'uso di classi esistenti con limitati gradi di libertà per scrivere le proprie funzionalità - questo è conveniente. Questo è il motivo per cui i framework sono così popolari. Eliminano problemi e mal di testa inutili quando si sviluppa l'architettura dell'applicazione. In effetti, scrivere qualcosa di proprio è creare una classe erede di una delle classi del framework, e scrivere l'implementazione di certi metodi di backend in essa, che sono già incorporati nella logica generale dell'applicazione (OnInit, OnTick, per esempio).

 
Vigor:

...

Creare un'architettura di classe competente è uno scoglio per i principianti. In sostanza, il significato della programmazione OOP è quello di scrivere il proprio"linguaggio", un linguaggio sul quale è conveniente e veloce creare in seguito. L'interfaccia è l'essenza di un linguaggio che è progettato per il compito. L'interfaccia non deve essere intesa come un costrutto di "tipo" della classe, come un contratto per la classe, che deve essere eseguito nel codice (in MQL, non esiste, e il ruolo dell'interfaccia può essere validato da metodi virtuali).

...

Lo scopo di OOP è piuttosto quello di scrivere la propria architettura. Non appena abbiamo un'architettura ben definita, chiara e intuitiva, tutto va a posto e né la complessità del progetto né il suo volume sono i fattori limitanti. Tuttavia, per raggiungere questa architettura molto chiara bisogna riscrivere le classi una per una avvicinandosi a questo ideale inizialmente vago.
 
C-4:
Piuttosto, il punto di OOP è di scrivere la propria architettura. Non appena abbiamo un'architettura chiara, concisa e intuitiva, tutto va a posto e né la complessità del progetto né la sua portata sono più fattori limitanti. Tuttavia, per raggiungere questa architettura molto chiara, bisogna riscrivere le classi una per una avvicinandosi a questo ideale inizialmente vago.
+1
Motivazione: