2015-04-04 1 views
1

Dans un effort pour simplifier le problème que j'ai, j'ai inclus deux classes dans foo.mqh et bar.mqh.Metatrader4/MQL4 code: «mauvais compte compte» avec les classes dépendantes

Quand je les compiles, je reçois:

'bar' - wrong parameters count foo.mqh Line 20 Column 9 

qui est cette ligne dans foo.mqh:

foobar(bar & b) { example = b;} 

J'ai lu sur d'autres postes qui traitent de cette erreur, mais ils ne semble pas être orienté objet et je ne peux pas corréler ces cas avec celui-ci.

Est-ce que cette barre a une valeur par défaut? .... à cause du constructeur? En fait, ce n'est probablement pas parce que si je les mets dans le même fichier, j'ai la même erreur.

Y at-il moyen de contourner ce problème?

Toute aide serait appréciée. Merci


bar.mqh

#property copyright "Copyright 2015, MetaQuotes Software Corp." // 01 
#property link  "https://www.mql5.com"      // 02 
#property strict             // 03 
                    // 04 
class bar{              // 05 
    private:              // 06 
     int b;              // 07 
     int u;              // 08 
     int g;              // 09 
    public:              // 10 
     bar * operator=(const bar & example)      // 11 
     {               // 12 
     b = example.b;           // 13 
     u = example.u;           // 14 
     g = example.u;           // 15 
     return GetPointer(this);        // 16 
     }               // 17 
     bar(bar & example)           // 18 
     {               // 19 
     b = example.b;           // 20 
     u = example.u;           // 21 
     g = example.u;           // 22 
     }               // 23 
                    // 24 
};                // 25 

foo.mqh

#property copyright "Copyright 2015, MetaQuotes Software Corp." // 01 
#property link  "https://www.mql5.com"      // 02 
#property strict             // 03 
                    // 04 
                    // 05 
#include<bar.mqh>             // 06 
                    // 07 
class foo {              // 08 
};                // 09 
                    // 10 
class foobar: public foo {          // 11 
    private:              // 12 
     bar example;            // 13 
    public:              // 14 
     foobar(bar & b) { example = b;}       // 15 
     bar getExample() { return example; }      // 16 
};                // 17 
+0

Le problème était que je n'avais pas de déclarations constructeur/destructeur dans la barre. – revivalfx

+0

Je pense que les ** valeurs partagées ** de la communauté StackOverflow vous feront publier non seulement votre énoncé de problème initial, mais aussi la solution au problème, au cas où vous auriez trouvé des progrès (sinon la solution) avant un autre messages répondre/commenter sur votre sujet. ** N'est-ce pas juste, revivalfx? ** – user3666197

+0

Cela semble juste. C'était l'intention de mon commentaire précédent. – revivalfx

Répondre

1

La question était que je n'ai pas eu une déclaration constructeur/destructor.

Voir bar.mqh ci-dessous:

//+------------------------------------------------------------------+ 
    //| bar.mqh               | 
    //| Copyright 2015, MetaQuotes Software Corp.      | 
    //| https://www.mql5.com            | 
    //+------------------------------------------------------------------+ 
    #property copyright "Copyright 2015, MetaQuotes Software Corp." 
    #property link "https://www.mql5.com" 
    #property strict 
    class bar{ 
    private: 
     int b; 
     int u; 
     int g; 
     public: 
     bar() {} 
     ~bar() {} 
     bar * operator=(const bar & example) 
     { 
      b = example.b; 
      u = example.u; 
      g = example.u; 
      return GetPointer(this); 
     } 
     bar(bar & example) 
     { 
      b = example.b; 
      u = example.u; 
      g = example.u; 
     } 
    }; 

foo.mqh n'a pas eu à changer.