2013-05-15 2 views
1

일부 상속에 약간의 문제가 있습니다. 내 기본 클래스에서상속 생성자 문제

나는 다음과 같은 생성자가 내 자식 클래스에서 다음

public Camera(string n) 
    { 
     name = n; 
    } 

을 나는 다음과 같은 생성자가 :

public StereoCameras(string n) 
    { 
     name = n; 

    } 

어떻게 지금, 내 아이 클래스가 포함되어 있지 않습니다 불평을 0 개의 인수를 취하는 생성자. 나는 이와 같은 상속을 사용하는 것에 상당히 익숙하며, 나는 나의 childs 생성자를 올바르게 설정했다고 생각했다.

내가 누락 된 자료가 있습니까?

답변

7

당신은 기본 생성자를 호출해야합니다

public StereoCameras(string n) : base(n) 
{ 
} 

그런 다음 파생 클래스의 할당은 중복입니다. 당신은 따라서 귀하의 기본 클래스에서 오류를 어떤 매개 변수 덜 생성자를 정의하지 않은 이후

public StereoCameras(string n) : base() 

:

+0

브릴리언트. 고맙습니다. – N0xus

1

사용

public StereoCameras(string n) : base(n) 
    { 


    } 
+0

대단히 감사합니다 :) – N0xus

3

아이 클래스 생성자 호출은 동일합니다. 기본 클래스의 매개 변수 덜 생성자가 호출된다 암시 (없음은 base 키워드를 사용하여 호출되지 않은 경우)

참조 : 파생 클래스에서 Using Constructors (C# Programming Guide) - MSDN

, 기본 클래스 생성자는 명시 적으로 을 을 호출되지 않은 경우 기본 키워드, 기본 생성자를 사용하여, 하나가 경우 페이지를 통해 올 암시

라고 의 기본 클래스는 기본 생성자를 제공하지 않는 경우 same link

에서 또한

public StereoCameras(string n) : base(n) 

: roblem 당신은 기본 클래스의 매개 변수 덜 생성자를 선언하거나 같은 explictily 정의 된 생성자를 호출 할 수 있습니다 파생 된 클래스는 기본을 사용하여 기본 생성자에 명시 적 호출을해야합니다.

0

클래스가 인스턴스화 될 때 기본 클래스의 생성자는 항상 파생 클래스의 생성자보다 먼저 호출됩니다. 기본 클래스에 기본 생성자가 포함되어 있지 않으면 기본 클래스의 생성자를 호출하는 방법을 명시 적으로 정의해야합니다.귀하의 경우에는

이 될

public StereoCameras(string n) 
    : base(n) 
{ 
} 
0

그냥 기본 클래스에 대한 매개 변수가없는 생성자를 추가합니다 (base 전화를 주) 것이다. 이렇게하면 문제가 해결됩니다.

public Camera() 
    { 

    }