2009-12-22 5 views
2

Tout en essayant de faire un constructeur régulier à l'appel du constructeur dans la même classe:Un constructeur appelant typique d'un autre constructeur, mais me donne une erreur

public Equation(OrdinaryEquations equation, 
        double xTranslation, 
        double yTranslation, 
        double rotationAngle) 
     : this((equation == OrdinaryEquations.SecondOrder) ? new EquationFunction(SecondOrderEquation) : new EquationFunction(ThirdOrderEquation), 
     xTranslation, yTranslation, rotationAngle){} 

OrdinaryEquations est énumération

EquationFunction est un délégué

Je reçois cette erreur: "Une référence d'objet est requise pour le champ, la méthode ou la propriété non statique" foreach: "new EquationFunction (SecondOrderEquation)" et "new EquationFunction (ThirdOrderEquation)" qui ressemble à quand j'essaie d'accéder à des données d'objet de la méthode statique

l'autre constructeur sig. :

public Equation(EquationFunction equation, double xTranslation, double yTranslation, double rotationAngle){} 

Y at-il quelque chose qui me manque ici? Je ne peux pas savoir quoi faire !!

P.S j'ai enlevé l'opérateur conditionnel et fait une initialisation de l'objet normal, mais ai donné la même erreur

+0

Qu'est-ce que "SecondOrderEquation", comme dans "new EquationFunction (SecondOrderEquation)"? –

+0

Pouvez-vous nous donner le code à EquationFunction –

+0

SecondOrderEquation est une méthode EquationFunction est un délégué: public delegate double EquationFunction (double valeur); –

Répondre

5

Je suppose que "SecondOrderEquation" est un nom de méthode dans votre classe "Equation". L'utilisation de "SecondOrderEquation" fait référence à this.SecondOrderEquation qui nécessite une instance de type "Equation" pour être un contexte. Pour résoudre ce problème, vous pouvez essayer de faire de "SecondOrderEquation" et "ThirdOrderEquation" des méthodes statiques.

+0

OMG, je suis tellement bête: D cela fonctionne maintenant –

1

Le problème est votre ligne si la déclaration dans l'appel du constructeur. En règle générale, ce type de construction d'objet est un peu une odeur de code.

Peut-être que vous devriez envisager de créer une méthode d'usine à la place?

0

nouvelle EquationFunction (SecondOrderEquation)

Je ne sais pas ce que SecondOrderEquation, mais il semble être un type .. Vouliez-vous dire typeof (SecondOrderEquation)?

+0

Je ne pense pas - la signature du deuxième constructeur a une variable de type 'EquationFunction' comme premier argument. – ChrisF

Questions connexes