2014-02-20 2 views
1

Google에서 "호출 기반 생성자"를 사용했지만 필요한 답변을 얻지 못했습니다.C# 호출 기본 생성자

다음은 내가 가지고있는 생성자입니다.

public class defaultObject 
{ 
    Vector2 position; 
    float rotation; 
    Texture2D texture; 

    public defaultObject(Vector2 nPos, float nRotation, Texture2D nTexture) 
    { 
     position = nPos; 
     rotation = nRotation; 
     texture = nTexture; 
    } 
} 

이제는 생성자와 그 모든 작동을 상속 받고 싶습니다. 이것은 내가 기대하는 것입니다.

public class Block : defaultObject 
{ 
    // variables inherited from defaultObject 
    public Block : defaultObject; //calls defaultObject constructor 
} 

왜 그럴 수 없습니까?

답변

1

는 왜 상속 된 멤버를 숨기고있다?

기본 클래스의 메소드가 virtual으로 표시되지 않았으므로


나는 그 부분을 삭제 한 것으로 알고 있습니다. 글쎄, 어쨌든 지금은 대답했습니다 ...

+0

그냥 고쳤습니다, 용의자. – ShadowByte

6

사용 : base() :

public class Block : defaultObject 
{ 
    // variables inherited from defaultObject 
    public Block() 
     : base() 
    {} 
} 

또는 매개 변수

:

public class Block : defaultObject 
{ 
    // variables inherited from defaultObject 
    public Block (Vector2 nPos, float nRotation, Texture2D nTexture) 
     : base(nPos, nRotation, nTexture) 
    {} 
} 
+0

내가 시도 using : base(), 이제 ':'이 유효하지 않은 토큰이라는 불평을합니다. – ShadowByte

+0

매개 변수없는 생성자에서()를 찾지 못했습니다. –

0

코드에 여러 가지 문제가 있습니다. 그것은 기본 클래스의 생성자를 호출하려면이

public Block(Vector2 nPos, float nRotation, Texture2D nTexture) : base(nPos,nRotation,nTexture) // see the way params are passed to the base constructor 
{} 
+0

모두 "param1"이라고 말하는 것 뿐이니까? – ShadowByte

+0

예. 혼란을 없애기 위해 내 대답을 업데이트했습니다. – Ehsan

+0

솔루션에서 기본 생성자가 이미이를 수행 할 때 모든 생성자 값을 입력해야합니다. 프로그램을 기본 생성자로 참조하는 간단한 방법이 있습니까? – ShadowByte

0

같아야합니다

public class Block : defaultObject 
{ 
    // variables inherited from defaultObject 
    public Block(npos, rotation, texture) : base(npos, rotation, texture); //calls defaultObject constructor 
} 

업데이트 방법을 재정의하려면, 당신은 기본 클래스는 가상 선언해야합니다 :

public virtual void update() { .. } 
+0

'차단 (...)'매개 변수의 유형이 누락되었습니다. –

+0

더 빠른 방법이 없습니까? 나는 비록 내가 그것을 바꾸고 싶지 않지만 다시 같은 생성자를 쓰는 것을 끝낸다. – ShadowByte