2017-11-08 2 views
0

을 제공 한 1 인수를 기대합니다. 기본 클래스에서 클래스를 파생시키고 싶습니다. 내 코드에서는 모든 것이 괜찮은 것 같습니다. 그러나 아래 프로그램에 오류가 표시됩니다. 오류의 원인과 오류를 설명하십시오. C++ 상속 : 오류 : 후보가 다음 인수에서

#include <iostream> 
using namespace std; 

struct Base 
{ 
    int x; 
    Base(int x_) 
    { 
     x=x_; 
     cout<<"x="<<x<<endl; 
    } 
}; 

struct Derived: public Base 
{ 
    int y; 
    Derived(int y_) 
    { 
     y=y_; 
     cout<<"y="<<y<<endl; 
    } 
}; 

int main() { 
    Base B(1); 
    Derived D(2); 
} 

오류입니다 :

Output: 

error: no matching function for call to 'Base::Base() 
Note: candidate expects 1 argument, 0 provided 
+0

기본 클래스의 생성자에 인수가 사용됩니다. 따라서 파생 클래스는 기본 클래스를 적절하게 구성해야합니다. 자세한 내용은 C++ 책을 참조하십시오. –

답변

0

기본 생성자 (즉 Base::Base()) DerivedBase 하위 객체를 초기화하는 데 사용되지만 하나를 Base이 없습니다.

member initializer list을 사용하여 Base의 생성자를 지정해야합니다. 예 :

struct Derived: public Base 
{ 
    int y; 
    Derived(int y_) : Base(y_) 
    //    ~~~~~~~~~~ 
    { 
     y=y_; 
     cout<<"y="<<y<<endl; 
    } 
};