2012-04-26 2 views
0

J'ai créé une classe simple de passer à la méthode de tri d'un tableau Juce http://www.rawmaterialsoftware.com/api/classArray.html#ac1dca4ab2895315dd85e25eaca2fcab1construction Implicite avec constructeur par défaut dans C++

Il ressemble à ceci:

class XComparison 
{ 
public: 
    static int compareElements (StraightPath first, StraightPath second) 
    { 
     return (int) (first.xOrigin - second.xOrigin); 
    } 
}; 

Lorsque je crée une instance de cette passer au comparateur, ces deux travaux:

XComparison x; 
XComparison x = XComparison(); 

mais celui-ci me donne une erreur de compilation:

XComparison x(); 

"gauche » .compareElements' doit avoir la classe/struct/union" sur les lignes 74, 101, 119 http://juce.git.sourceforge.net/git/gitweb.cgi?p=juce/juce;a=blob;f=modules/juce_core/containers/juce_ElementComparator.h;h=f976c40c7741b3df30d10e699c282a3569a49e3c;hb=HEAD#l74

Pourquoi pas le travail d'affectation implicite ici?

Merci!

+2

Cela a 99999 doublons de personnes en cours d'exécution dans cette hilarité. – Puppy

Répondre

1

Vous déclarez une fonction et non une expression, c'est pourquoi vous obtenez l'erreur.

XComparison x; // default construction, unitialised 
XComparison x = XComparison(); // construct x from default constructor 
XComparison x(); // all you are doing is declaring a function x that returns XComparison 

Voir cette C++ faq

Questions connexes