Error when overriding base class constructor in subclass

I receive the following error when I try to override a base class's constructor in a subclass.

An object reference is required for the non-static field, method, or property 'Chapter_6_project_3.Bee.weight'

attached is the relevant code, with a comment showing where the error is received.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Chapter_6_project_3;
 
namespace chapter_6_project_3
{
    class Worker : Bee
    {
        public Worker(string[] jobsICanDo) : base(weight) //ERROR HERE!!!! it's for the base's parameter weight
        {
            this.jobsICanDo = jobsICanDo;
        }
 
        public override int ShiftsLeft
        {
            get
            {
                return shiftsToWork - shiftsWorked;
            }
        }
 
        private string currentJob = "";
        private string[] jobsICanDo;
        private int shiftsToWork;
        private int shiftsWorked;
 
        public string CurrentJob
        { 
            get
            {
                return currentJob;
            }
        }
 
        public bool DoThisJob(String potentialJob, int potentialShiftsToWork)
        {
            if (!String.IsNullOrEmpty(CurrentJob))
                return false;
 
            for (int i = 0; i < jobsICanDo.Length; i++)
            {
                if (potentialJob == jobsICanDo[i])
                {
                    currentJob = potentialJob;
                    shiftsToWork = potentialShiftsToWork;
                    return true;
                }
            }
 
            return false;
        }
 
        public bool WorkOneShift()
        {
            if (String.IsNullOrEmpty(currentJob))
                return false;
            shiftsWorked++;
 
            if (shiftsWorked > shiftsToWork)
            {
                shiftsWorked = 0;
                shiftsToWork = 0;
                currentJob = "";
                return true;
            }
            else
                return false;
        }
    }
}
 
 
//following ith base class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Chapter_6_project_3
{
    class Bee
    {
        public Bee(double weight)
        {
            this.weight = weight;
        }
 
        public virtual int ShiftsLeft
        {
            get
            {
                return 0;
            }
        }
 
        private double weight;
 
        public virtual double GetHoneyConsumption()
        {
            double consumption;
            if (ShiftsLeft == 0)
                consumption = 7.5;
            else
                consumption = 9 + ShiftsLeft;
 
            if (weight > 150)
                consumption *= 1.35;
 
            return consumption;
        }
    }
}

Open in new window

jabrthelAsked:
Who is Participating?
 
RishadanPortConnect With a Mentor Commented:
You need to declare your Worked constructor differently in order for it to work, like this:

public Worker(string[] jobsICanDo, double weight) : base(weight) <-- this will work
0
 
RishadanPortCommented:
yes there is no varible defined "weight"
0
 
jabrthelAuthor Commented:
Yeah... but it's a parameter passed into the base class.  Isn't the structure as follows...
public class Class1 : base (baseParam1, baseParam2, etc.)
{
}

Open in new window

0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
jabrthelAuthor Commented:
Oh... ok, I see
0
 
jabrthelAuthor Commented:
Yup, that's it.
0
 
jabrthelAuthor Commented:
Well, that was a beginner's mistake.
0
 
RishadanPortCommented:
using the keyword "base" means that you are dealing with the parent object.

If you do this:

base()   or base(  ... parameters ... )

You are constructing your parent object in a certain way.


You can also do this:

base.someMethod() or base.someVariable    as well
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.