2014-11-04 45 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

相关问题