2009-12-22 69 views
2

雖然試圖使一個普通的構造函數的構造函數調用同一類:從另一個構造一個典型的調用構造函數,但給我一個錯誤

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

OrdinaryEquations是枚舉

EquationFunction爲代表

我收到此錯誤: 「非靜態字段,方法或屬性需要對象引用」foreach:「new EquationFunction(SecondOrderEquation)」and 「new EquationFunction(ThirdOrderEquation)」 這聽起來像當我嘗試從靜態方法訪問對象數據時

其他構造函數sig。 :

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

有什麼我在這裏失蹤?我無法弄清楚該做什麼!

P.S我刪除了條件運算符,並使其正常對象初始化,但給了同樣的錯誤

+0

什麼是「SecondOrderEquation」,如在「新的EquationFunction(SecondOrderEquation)」中? – 2009-12-22 12:57:35

+0

你可以給我們代碼公式函數 – 2009-12-22 13:05:17

+0

SecondOrderEquation是一種方法 EquationFunction是一個委託:public delegate double EquationFunction(double value); – 2009-12-22 13:13:25

回答

5

我假設「SecondOrderEquation」是您的類「方程」中的方法名稱。 「SecondOrderEquation」的用法引用this.SecondOrderEquation,它需要一個類型爲「Equation」的實例作爲上下文。

要修復它,您可以嘗試使「SecondOrderEquation」和「ThirdOrderEquation」成爲靜態方法。

+0

OMG,我很愚蠢:D 它現在可以工作 – 2009-12-22 12:59:28

1

的問題是你的網線,如果在構造函數中調用語句。

一般來說,這種類型的對象構造有點代碼味道。

也許你應該考慮創建一個工廠方法呢?

0

新EquationFunction(SecondOrderEquation)

我不知道是什麼SecondOrderEquation,但它似乎是一個類型..你的意思是typeof運算(SecondOrderEquation)?

+0

我不這麼認爲 - 第二個構造函數的簽名有一個'EquationFunction'類型的變量作爲第一個參數。 – ChrisF 2009-12-22 12:57:02

相關問題