Errori, bug, domande - pagina 1979

 
Andrey Barinov:
Grazie. Non ho mai incontrato questo nella documentazione. Può indicarlo?
Questa regola l'ha inventata lui stesso. La documentazione dice:

Di conseguenza, testfunc() può essere accessibile solo (e soltanto) da cA:: methods -> in questo caso da cA::test()

 
A100:
E hai provato a compilare questo esempio in C++ - o è solo un ragionamento teorico generale?

Hai provato a seguire il link? Non solo potete compilare lì, ma anche eseguire l'esempio con successo.

 
Stanislav Korotky:

Hai provato a seguire il link? Non solo potete compilare lì, ma anche eseguire l'esempio con successo.

Perché allora tale codice non funziona?

class cA;
class cB;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class cA
  {
private:
   int               m_var;
   int               m_func(void){return(this.m_var);}
public:
   void test(cB &b)
     {
      this.m_var=b.m_var;      // (1) 'm_var' - private member access error
       
      this.m_var=b.m_func();   // (2)  => norm
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class cB : public cA
  {
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   cA A;
   cB B;

   A.test(&B);
//---
   return(INIT_SUCCEEDED);
  }


Non vedo alcuna differenza tra (1) e (2).

 
Stanislav Korotky:

Hai provato a seguire il link? Lì potete non solo compilare, ma anche eseguire con successo un esempio.

Stiamo discutendo il codice specifico dato sopra. Se non l'avete provato, scrivete semplicemente
 
Andrey Barinov:

Perché allora questo codice non funziona?

Ora il 2° teorico vi darà un'altra regola, non meno vaga della prima

Propongo di semplificare il codice al limite

 
A100:
Il codice specifico di cui sopra è in discussione. Se non l'hai provato, scrivilo così

Il codice di cui sopra è stato modificato per la sintassi C++ - infatti è stato lasciato uno a uno nel contesto della discussione sull'accesso dei membri privati - e quel codice funziona. Questa era la risposta alla domanda sul perché funziona in MQL. Di cos'altro avete bisogno? Cos'altro vuoi che provi? Non scrivere sciocchezze da solo.

 
Stanislav Korotky:

Il codice di cui sopra è stato modificato per la sintassi C++ - infatti è stato lasciato uno a uno nel contesto della discussione sull'accesso dei membri privati - e quel codice funziona. Questa era la risposta alla domanda sul perché funziona in MQL. Di cos'altro avete bisogno? Cos'altro vuoi che provi? Non scrivere sciocchezze da solo.

Puoi postarlo qui e confrontiamo come l'hai sistemato allora (non vado sui link dei siti di sinistra). Se non sai come comunicare normalmente - (intendo dire stronzate) non scrivere

 
Andrey Barinov:

Perché allora questo codice non funziona?


Non vedo alcuna differenza tra (1) e (2).

Questo è un bug di MQL. Funziona in C++. Scrivere al service-desk.

 
Stanislav Korotky:

Questo è un bug di MQL. In C++ funziona. Scrivete al service-desk.

Capito, grazie.

È solo che è interessante nel secondo esempio. cB non sa nulla di m_var e m_func e non sono disponibili per lui (cioè non possono essere chiamati da dentro cB stesso), mentre possono essere chiamati da altri oggetti...
 
A100:

Postalo qui e confrontiamo poi come l'hai modificato (non seguo i link ai siti di sinistra). Se non sapete come comunicare normalmente - (intendo dire stronzate) non scrivete.

Non essere scortese. Sei stato il primo a iniziare a comunicare in modo anomalo qui.

L'intero Internet è composto da siti di sinistra. Come si può usare?

Questo particolare sito e molti altri simili semplificano significativamente la vita dei programmatori (permettendo loro di testare snippet, richieste http, controllare i siti di mappatura, ecc.) - come trattarli dipende da ognuno - non volete non usate, ma non andate sugli altri per attaccare.