回 帖 发 新 帖 刷新版面

主题:关于构造函数的问题

namespace MyApplication
{
        public  class output1 : output
        {
            //private char i;
            //public output1(char from, char to)
            //{
            //    f = from;
            //    t = to;

            //}
            public override string myresult()
            {
                for (i = t; i >= f; i--)
                {
                    str = str + i;
                }
                return str;
            }
        }

        public  class output
        {
            protected char i, f, t;
            //private char i;
            public output(char from, char to)
            {
                f = from;
                t = to;

            }
            public virtual string myresult()
            //public string myresult()
            {
                //str="";
                for (i = f; i <= t; i++)
                {
                    str = str + i;
                }
                return str;
            }
        }
    }
    
}


会说No overload for method 'output' takes '0' arguments的错误.因改是构造函数OUTPUT的问题.如何解决呢?    

回复列表 (共5个回复)

沙发

为output添加默认构造函数

板凳

什么意思?!

3 楼

public output(){}

4 楼

您的意思是OUTPUT类里要有两个构造函数吗?
我的OUTPUT类里已经有一个构造函数了啊

又添加了一个构造函数的确OK了.高人,能稍微的解释一二吗?

5 楼

继承类时,由于要先初始化基类,所以自然要调用基类的构造函数,你在子类中没有指明调用哪个,自然调用默认构造函数,所以如果不细考虑单纯为了不编译出错,直接加上一个默认构造函数就可以了。

如果就本例单独考虑的话,你把子类构造函数改成
public output1(char from, char to):base(from,to){}
是最为符合要求的

我来回复

您尚未登录,请登录后再回复。点此登录或注册