2014-11-04 46 views
0

做一項任務,教師幾乎寫了我們一步一步該怎麼做,我有一段時間這4個錯誤,但只是忽略了他們。「不一致的可訪問性:基類比類更難以訪問」

基本上我有一個父類菜單與兒童班PauseMenu,MainMenu,DifficultyMenu和HelpMenu。我得到的四個錯誤說父類比子類更難以訪問。按照指示,菜單是抽象的,而子菜單是公開的。

#region Constructors 
    protected Menu(MenuName menuName, Texture2D background, Rectangle drawRectangle) 
    { 
     this.menuName = menuName; 
     this.background = background; 
     this.drawRectangle = drawRectangle; 
    } 
    public Menu() 
    { 

    } 
    #endregion 

我們的教授明確表示沒有參數專門添加一個公共構造這個原因,但我的IDE仍然告訴我,它的錯。

有關如何解決此問題的任何想法?

這裏是主菜單

public MainMenu(Rectangle drawRectangle) 
    : base(MenuName.MainMenu, SpriteDictionary.GetSprite("mainMenuBackground"), drawRectangle) 
{} 

構造這裏是類

namespace WackyPong.Menus 
{ 
    public abstract class Menu 
    { 
     //all my code 
    } 
+1

什麼訪問說明符是'Menu'(類)給出的? *提示*:我猜它的「內部」或不存在。 – BradleyDotNET 2014-11-04 22:43:42

+1

這不是*構造函數*可訪問性在這裏 - 它是*類*可訪問性。所以你應該檢查類聲明,這兩個都不包括在這裏。 – 2014-11-04 22:46:10

+1

請注意,'abstract'不是*訪問說明符。非嵌套類是'public'或'internal',後者是默認類。 – 2014-11-04 22:47:02

回答

2

此錯誤通常與類的可訪問的聲明,如在評論中提到。這可能會導致一個問題,因爲您通過public而不是基類型公開派生類型,因此類型轉換和繼承成員會輸入一個灰色區域「我們是否將這些暴露給其他dll?」 - 由於拒絕構建項目而導致此錯誤消除的區域。

看到抽象基類確實是公開的,您是否確定這適用於您創建的所有類型?我注意到在構造函數中使用MenuName對象。

請注意,如果您有任何公開屬性,字段或方法的公開屬性,字段或方法未公開公開 - 編譯器再次進入「該成員被暴露的區域,但類型包含在其簽名中不是。「

+0

menuName只是一個枚舉,是的它是公開的 – user1801067 2014-11-04 22:59:34

相關問題