2013-10-22 4 views
4

어떻게이 오류를 해결할 수 있습니까?"메소드에 과부하가 없습니다." '0 인수가 필요합니다. "

"메서드 'output'에 대한 오버로드가 0 개의 인수를 필요로합니다."

오류는 "fresh.output();"의 맨 아래에 있습니다.

내가 뭘 잘못하고 있는지 모르겠다. 누군가 코드를 수정하기 위해 무엇을해야하는지 말해 줄 수 있습니까? 방법 "출력"인수를 필요로 함을 말하고

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(); 
     } 
    } 
} 
+1

나는 당신이 이해하지 못하는 무엇인지 ... 좀 더 포괄적 인 오류 메시지에 대해 생각하지 수 ? –

+0

fresh.output(); 여기서 매개 변수를 전달하면 출력과 같아야합니다 (double o, double tw, double th, double f). – Anand

+1

오류 메시지가 분명하지 않습니까? –

답변

10

:

여기 내 코드입니다. "출력"에 대한 서명은 다음과 같습니다.

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

그래서 전화를 걸려면 4 개의 복식을 전달해야합니다.

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

또는 예를 들어 하드 코딩 된 값을 사용하기 :

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

다음과 같이 변경했습니다. "fresh.output (double o, double tw, double th, double f);" 하지만 더 많은 오류가 있습니다. 너도 그걸 도와 주실 수 있니? – User

+0

메서드를 호출하면 인스턴스를 전달합니다. 타입을 다시 선언 할 필요는 없습니다. 메서드를 선언 할 때 완료됩니다. 메소드 호출과 메소드 선언의 차이점을 이해해야합니다. –

0

당신은 0 (영) 매개 변수를 사용하여 output 메소드를 호출하고, 그러나 당신이 4 개 배 값을받을를 선언했다. 컴파일러는 매개 변수없이 output 메서드가 없으므로 호출해야하는 것을 모릅니다.

0

output의 모든 구현에는 인수가 필요합니다. 인수를 제공하면 컴파일 할 수 있어야합니다. 이처럼

은 : 0 인수를 output라는 이름의 방법은 없습니다

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

만 4 개 인수를 받아들이는 일이있다. 당신은 output()에 매개 변수를 전달해야합니다

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

fresh.output() 2 개 매개 변수를 기대하고 그들에게 제공하지 않을

관련 문제