Како да решите грешку „Нема подударања конструктора за иницијализацију“ у Ц++

Kako Da Resite Gresku Nema Podudarana Konstruktora Za Inicijalizaciju U C



У Ц++ конструктор је одређена функција члана која узима своје име по имену класе са којом је повезана. Користи се за иницијализацију неких корисних вредности за чланове објекта. Ако конструктор није дефинисан од стране корисника, Ц++ компајлер генерише подразумевани конструктор и не очекује никакве параметре и празно тело. Међутим, када постоји кориснички дефинисани конструктор, потребно је декларисати његово тело и параметре.

Шта узрокује грешку „Нема подударања конструктора за иницијализацију“ у Ц++?

Када се ради о конструкторима у Ц++-у, долази до грешке „Нема одговарајућег конструктора за иницијализацију“, то је обично зато што када се конструктор позове, подразумевани конструктор од стране компајлера није креиран, тако да морате сами да декларишете параметре и тело конструктора. Неуспех да се декларишу одговарајући параметри резултирају овом врстом грешке конструктора.







Направите једноставну текстуалну датотеку, налепите у њу код функције Скуаре() и сачувајте је са екстензијом .х. Сада налепите ову датотеку у фасциклу укључивања у фасциклу бин компајлера ЦПП. Сада, када позовете ову датотеку заглавља у маин.цпп, ову датотеку ће прочитати компајлер.



Датотека заглавља Скуаре.х

#ифндеф СКУАРЕ_Х

#дефине СКУАРЕ_Х


класа Квадрат {

приватни :

дупло дужина ;

дупло ширина ;

јавности :

Квадрат ( дупло , дупло ) ;

дупло гетЛенгтх ( ) конст ;

дупло гетВидтх ( ) конст ;

} ;



Квадрат :: Квадрат ( дупло л, дупло У ) {

дужина = л ;
ширина = У ;

}



дупло Квадрат :: гетВидтх ( ) конст { повратак ширина ; }

дупло Квадрат :: гетЛенгтх ( ) конст { повратак дужина ; }



#ендиф

маин.цпп Хеадер Филе

#инцлуде <иостреам>

#инцлуде 'скуаре.х'

Користећи именског простора стд ;



инт главни ( )

{

Квадратна кутија 1 ( 10.0 , 10.0 ) ;

Квадратна кутија 2 ;



цоут << ' ширина и дужина кутије 1: ' << бок1. гетВидтх ( ) << ', ' << бок1. гетЛенгтх ( ) << ендл ;

цоут << ' ширина и дужина кутије 2: ' << бок2. гетВидтх ( ) << ', ' << бок2. гетЛенгтх ( ) << ендл ;



бок2 = бок1 ;

цоут << 'Када је квадратна кутија 1 једнака квадратна кутија 2' << ендл ;

цоут << ' ширина и дужина кутије 1: ' << бок1. гетВидтх ( ) << ', ' << бок1. гетЛенгтх ( ) << ендл ;

цоут << ' ширина и дужина кутије 2: ' << бок2. гетВидтх ( ) << ', ' << бок2. гетЛенгтх ( ) << ендл ;



повратак 0 ;

}

У овом програму, корисник уноси дужину и ширину два квадратна поља, а затим изједначава две кутије и враћа њихову дужину и ширину:




Компајлер враћа грешку у реду бр. 14 јер извођач очекује два аргумента док му не постоје аргументи:





У реду #8 компајлер враћа грешку у конструктору јер аргументи нису дати док морају постојати дефинисани аргументи.

Како да решите грешку „Нема подударања конструктора за иницијализацију“ у Ц++

Компајлер приказује грешку у реду бр. 8 кода маин.цпп зато што се покушава да позове подразумевани конструктор Скуаре-а. Компајлер не може да генерише подразумевани конструктор јер већ постоји кориснички дефинисани конструктор који узима два аргумента. Према томе, наведите његове параметре као:



Квадратна кутија 2 ( 0 , 10 ) ;

Компајлер генерише подразумевани конструктор само ако нема кориснички дефинисани конструктор. Дакле, овде у овом случају када је дефинисан конструктор, подразумевани конструктор мора да обезбеди корисник. Дакле, за ову сврху, наведите и подразумеване аргументе у конструктору са два аргумента у датотеци Скуаре.х. Ово не оставља податке неиницијализованим.

Квадрат :: Квадрат ( дупло л = 0 , дупло У = 0 )

Грешка конструктора се може поправити позивањем и декларисањем конструктора и његових параметара исправно. Кодови у маин.цпп и Скуаре.х се мењају према горе наведеним упутствима. И грешка конструктора неподударања је решена. Ово је ажурирани код за датотеку заглавља:

Ово је ажурирани код за главну датотеку:

Горе наведени кодови након отклањања грешака враћају следећи излаз:

Ширина и дужина два квадратна поља даје корисник, а њихови параметри се враћају. Касније се примењује услов да оба поља буду једнака, а затим ће бити враћене њихове нове одговарајуће вредности дужине и ширине.

Закључак

У Ц++ конструктор је одређена функција члана која узима своје име по имену класе са којом је повезана. Користи се за иницијализацију неких корисних вредности за чланове објекта. Грешка „Нема подударања конструктора за иницијализацију“ у Ц++-у се суочава када постоји грешка у декларацији конструктора. Обично Ц++ компајлер сам генерише конструктор, али када корисник декларише конструкторе онда мора постојати одговарајућа декларација параметара и тела конструктора како би се избегле такве грешке.