2011-03-25 126 views
1

我剛纔在瓦拉開始的時候,我試圖做一個簡單的程序,要求兩個輸入:調用方法時出現這種錯誤是什麼意思?

  1. 指定一個週期程度的int;和
  2. 包含I/R的字符,用於迭代或遞歸過程。

就在編譯之前,我得到這個錯誤:

test0.vala:8.5-8.16: error: Access to instance member `test0.test_exec' denied 
     test_exec(q); 
     ^^^^^^^^^^^ //the entire statement 
Compilation failed: 1 error(s), 0 warning(s) 

了非常簡單的程序的引擎收錄位於here

這裏有一個片段:

public static void main(string[] args) 
{ 
    stdout.printf("Greetings! How many cycles would you like? INPUT: "); 
    int q=0; 
    stdin.scanf("%d", out q); 
    test_exec(q); 
} 

public void test_exec(int q) 
{ 
    //method code here 
} 

能否請您賜教做什麼,以及有什麼祕訣?謝謝。

+0

@Rek:歡迎使用代碼審查。此網站用於審覈工作代碼,而不是修復損壞的代碼。請參閱常見問題解答:http://codereview.stackexchange.com/faq – 2011-03-25 15:43:39

回答

1

您將test_exec定義爲實例(非靜態)方法。與靜態方法不同,需要在給定類的實例上調用實例方法。但是,你試圖在沒有這樣的實例的情況下調用它,從而發生錯誤。

所以您可能需要創建test0類的實例,並調用該test_exec(雖然這將毫無意義,因爲test_exec不依賴於或改變對象的任何狀態 - 因爲實際上test0類的事沒有任何狀態)或者使用test_exec以及其他方法調用test_exec靜態。

+0

感謝您的啓發!它的工作,但現在我有一個邏輯錯誤與我的錯誤陷阱test_exec方法:P – Rek 2011-03-26 01:05:52

+0

@ Lyon:你應該創建一個新的問題,包括所有的代碼和描述你想要它做什麼,以及如何不同於它實際做的。 – sepp2k 2011-03-26 01:26:35