C++에서 '초기화에 일치하는 생성자가 없습니다' 오류를 해결하는 방법

C Eseo Chogihwa E Ilchihaneun Saengseongjaga Eobs Seubnida Olyuleul Haegyeolhaneun Bangbeob



C++에서 생성자는 관련된 클래스의 이름을 따서 이름을 취하는 특정 멤버 함수입니다. 개체 구성원에 대한 몇 가지 유용한 값을 초기화하는 데 사용됩니다. 사용자가 생성자를 정의하지 않은 경우 C++ 컴파일러는 기본 생성자를 생성하고 매개 변수가 없고 본문이 비어 있을 것으로 예상합니다. 다만, 사용자 정의 생성자가 있는 경우에는 해당 생성자의 몸체와 매개변수를 선언해야 합니다.

C++에서 '초기화에 일치하는 생성자 없음' 오류의 원인은 무엇입니까?

C++에서 생성자를 처리할 때 '초기화에 일치하는 생성자가 없습니다.' 오류가 발생하는 이유는 일반적으로 생성자가 호출될 때 컴파일러가 기본 생성자를 생성하지 않기 때문에 생성자의 매개 변수와 본문을 직접 선언해야 하기 때문입니다. 적절한 매개변수를 선언하지 못하면 이러한 유형의 생성자 오류가 발생합니다.







간단한 텍스트 파일을 만들고 Square() 함수의 코드를 붙여넣은 다음 .h 확장자로 저장합니다. 이제 이 파일을 CPP 컴파일러 bin 폴더의 포함 폴더에 붙여넣습니다. 이제 main.cpp에서 이 헤더 파일을 호출하면 컴파일러가 이 파일을 읽습니다.



Square.h 헤더 파일

#ifndef SQUARE_H

#SQUARE_H 정의


수업 정사각형 {

사적인 :

더블 길이 ;

더블 너비 ;

공공의 :

정사각형 ( 더블 , 더블 ) ;

더블 getLength ( ) const ;

더블 getWidth ( ) const ;

} ;



정사각형 :: 정사각형 ( 더블 엘, 더블 ~ 안에 ) {

길이 = ;
너비 = ~ 안에 ;

}



더블 정사각형 :: getWidth ( ) const { 반품 너비 ; }

더블 정사각형 :: getLength ( ) const { 반품 길이 ; }



#endif

main.cpp 헤더 파일

#include

#include 'square.h'

사용하여 네임스페이스 성병 ;



정수 기본 ( )

{

정사각형 상자1 ( 10.0 , 10.0 ) ;

정사각형 상자2 ;



시합 << ' 상자 1의 너비와 길이: ' << 상자1. getWidth ( ) << ', ' << 상자1. getLength ( ) << ;

시합 << ' 상자 2의 너비와 길이: ' << 상자2. getWidth ( ) << ', ' << 상자2. getLength ( ) << ;



상자2 = 상자1 ;

시합 << ' 정사각형 상자 1이 정사각형 상자 2와 같은 경우 ' << ;

시합 << ' 상자 1의 너비와 길이: ' << 상자1. getWidth ( ) << ', ' << 상자1. getLength ( ) << ;

시합 << ' 상자 2의 너비와 길이: ' << 상자2. getWidth ( ) << ', ' << 상자2. getLength ( ) << ;



반품 0 ;

}

이 프로그램에서 사용자는 두 개의 정사각형 상자의 길이와 너비를 입력한 다음 두 상자를 동일시하고 길이와 너비를 반환합니다.


계약자가 인수가 제공되지 않은 상태에서 두 개의 인수를 기대하기 때문에 컴파일러는 라인#14에서 오류를 반환합니다.

8번째 줄에서는 정의된 인수가 있어야 하는데 인수가 제공되지 않았기 때문에 컴파일러는 생성자에서 오류를 반환합니다.

C++에서 '초기화에 일치하는 생성자가 없습니다' 오류를 해결하는 방법

Square의 기본 생성자를 호출하려고 하기 때문에 컴파일러는 main.cpp 코드의 8번째 줄에 오류를 표시합니다. 두 개의 인수를 사용하는 사용자 정의 생성자가 이미 있으므로 컴파일러는 기본 생성자를 생성할 수 없습니다. 따라서 해당 매개변수를 다음과 같이 지정하십시오.

정사각형 상자2 ( 0 , 10 ) ;

컴파일러는 사용자 정의 생성자가 없는 경우에만 기본 생성자를 생성합니다. 따라서 이 경우 생성자가 정의되어 있으면 사용자가 기본 생성자를 제공해야 합니다. 따라서 이 목적을 위해 Square.h 파일의 두 인수 생성자에도 기본 인수를 제공하십시오. 이는 데이터를 초기화되지 않은 상태로 두지 않습니다.

정사각형 :: 정사각형 ( 더블 = 0 , 더블 ~ 안에 = 0 )

생성자 오류는 생성자와 해당 매개변수를 올바르게 호출하고 선언하여 수정할 수 있습니다. main.cpp 및 Square.h의 코드는 위에 제공된 지침에 따라 변경됩니다. 그리고 일치하지 않는 생성자 오류가 해결되었습니다. 헤더 파일의 업데이트된 코드는 다음과 같습니다.

다음은 기본 파일의 업데이트된 코드입니다.

오류 디버깅 후 위의 코드는 다음 출력을 반환합니다.

두 개의 정사각형 상자의 너비와 길이는 사용자가 제공하고 해당 매개변수가 반환됩니다. 나중에 두 상자를 동일하게 만드는 조건이 적용되고 해당하는 새로운 길이 및 너비 값이 반환됩니다.

결론

C++에서 생성자는 관련된 클래스의 이름을 따서 이름을 취하는 특정 멤버 함수입니다. 개체 구성원에 대한 몇 가지 유용한 값을 초기화하는 데 사용됩니다. C++에서 '초기화에 일치하는 생성자가 없습니다' 오류는 생성자 선언에 오류가 있을 때 발생합니다. 일반적으로 C++ 컴파일러는 생성자 자체를 생성하지만 사용자가 생성자를 선언할 때 이러한 오류가 발생하지 않도록 매개 변수 및 생성자 본문을 올바르게 선언해야 합니다.