User
User

Reputation: 159

How to fix "No overload for method ' ' takes 0 arguments"?

How can I fix this error?

"No overload for method 'output' takes 0 arguments".

The error is at the very bottom at "fresh.output();".

I don't know what I'm doing wrong. Can someone tell me what I should do to fix the code?

Here is my code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication_program
{
    public class Numbers
    {
        public double one, two, three, four;
        public virtual void output(double o, double tw, double th, double f)
        {
            one = o;
            two = tw;
            three = th;
            four = f;
        }
    }
    public class IntegerOne : Numbers
    {
        public override void output(double o, double tw, double th, double f)
        {
            Console.WriteLine("First number is {0}, second number is {1}, and third number is {2}", one, two, three);
        }
    }
    public class IntegerTwo : Numbers
    {
        public override void output(double o, double tw, double th, double f)
        {
            Console.WriteLine("Fourth number is {0}", four);
        }
    }
    class program
    {
        static void Main(string[] args)
        {
            Numbers[] chosen = new Numbers[2];

            chosen[0] = new IntegerOne();
            chosen[1] = new IntegerTwo();

            foreach (Numbers fresh in chosen)
            {
                fresh.output();
            }     
            Console.ReadLine();
        }
    }
}

Upvotes: 11

Views: 109383

Answers (5)

Bill Gregg
Bill Gregg

Reputation: 7147

It's telling you that the method "output" needs arguments. Here's the signature for "output":

public override void output(double o, double tw, double th, double f)

So if you want to call that you need to pass in four doubles.

fresh.output(thing1,thing2,thing3,thing4);

Or to use hard coded values as an example:

fresh.output(1,2,3,4);

Upvotes: 11

Manoj Naik
Manoj Naik

Reputation: 396

fresh.output() expect 2 parameters and you're not providing them

Upvotes: 0

Chris Mantle
Chris Mantle

Reputation: 6683

There's no method named output that takes 0 arguments, there's only one that accepts 4 arguments. You must pass parameters to output():

foreach (Numbers fresh in chosen)
{
    fresh.output(o, tw, th, f);
}

Upvotes: 6

Mikael Östberg
Mikael Östberg

Reputation: 17156

All your implementations of method output takes arguments. Supply the arguments and you should be able to compile.

Like this:

fresh.output(1, 2, 3, 4);

Upvotes: 0

codeling
codeling

Reputation: 11379

You're calling the output method with 0 (zero) parameters, but you have declared it to receive 4 double values. The compiler doesn't know what it should call, since there is no output method with no parameter.

Upvotes: 0

Related Questions