2011-07-14 78 views
0

我有一個類A.現在這有一個方法說performSomething()。這基本上將LINE作爲輸入並檢查它是什麼類型的LINE並相應地進行分支並執行預期的任務;關於嵌套類的問題[本地和嵌套]

Class A 
{ 
    performSomething(LINE) 
    { 
     check LINE TYPE 
     switch(LINE) { 
     } 
    } 
}; 

現在,我被要求引入一個新的內部類來做這個操作。現在,麻煩來了。我完全不知道他的意思是什麼,或者如果這真的在這裏有意義!

如果我需要進一步處理,那麼我需要LINE(輸入參數)。但是,如果我選擇將新類設計爲LOCAL類(方法內的類),那麼我無法訪問它[因爲本地自動變量不可訪問]; [我也發佈了一個問題。

我既不覺得可以通過使用NESTED類(班內的類)來解決這個問題;但我不太確定它。

他還堅持LINE可以在嵌套類中使用,所以我不用擔心它。但是,我的頭腦突破了,這條線不是一個實例變量。這是一個AUtomatic變量。

所以,請有人指出,如果這可以實現徹底的嵌套類。

謝謝, Moanr Pavan。

+0

你可以用你感興趣的語言來標記它 - 在某些語言中,在同一範圍內聲明的內部類的變量將可用於內部類中的方法 – antlersoft

+0

ah..forgot提及它是在C++中 – user844631

回答

0

那麼,到目前爲止,代碼存在很多問題。

例如,switch很可能是錯誤的多態性方法。在C++中,我們通常使用virtual函數,但有時我們也可以使用函數重載和/或模板(如果實際類型在編譯時已知)。其次,對於「內在」階級沒有規定的理由,也不清楚這意味着什麼。你可以在其他類中使用類,甚至可以在函數內部使用類。所以下面的語法上是OK的:

class A 
{ 
    void performSomething(LINE) 
    { 
     class B { 
      static void performSomething(A* that, LINE) { code }; 
     }; 
     B::performSomething(this, LINE); 
    } 
}; 

你的編譯器會接受這個,但我們必須問:這是什麼意思?另請注意,如果我們明確通過thisB::performSomething只能訪問A中的成員。