Как устранить ошибку «Нет соответствующего конструктора для инициализации» в C++

Kak Ustranit Osibku Net Sootvetstvuusego Konstruktora Dla Inicializacii V C



В C++ конструктор — это определенная функция-член, имя которой соответствует имени класса, с которым она связана. Он используется для инициализации некоторых полезных значений членов объекта. Если конструктор не определен пользователем, компилятор C++ создает конструктор по умолчанию и не ожидает никаких параметров и пустого тела. Однако при наличии пользовательского конструктора необходимо объявить его тело и параметры.

Что вызывает ошибку «Нет соответствующего конструктора для инициализации» в C++?

При работе с конструкторами в C++ возникает ошибка «Нет соответствующего конструктора для инициализации». Обычно это происходит потому, что при вызове конструктора компилятор не создает конструктор по умолчанию, поэтому вам приходится самостоятельно объявлять параметры и тело конструктора. Неспособность объявить правильные параметры приводит к ошибке конструктора этого типа.







Создайте простой текстовый файл, вставьте в него код функции Square() и сохраните его с расширением .h. Теперь вставьте этот файл в папку include папки bin компилятора CPP. Теперь при вызове этого заголовочного файла в main.cpp этот файл будет прочитан компилятором.



Заголовочный файл Square.h

#ifndef SQUARE_H

#define SQUARE_H


сорт Квадрат {

частный :

двойной длина ;

двойной ширина ;

общественный :

Квадрат ( двойной , двойной ) ;

двойной получить длину ( ) константа ;

двойной получить ширину ( ) константа ;

} ;



Квадрат :: Квадрат ( двойной я, двойной В ) {

длина '=' л ;
ширина '=' В ;

}



двойной Квадрат :: получить ширину ( ) константа { возвращаться ширина ; }

двойной Квадрат :: получить длину ( ) константа { возвращаться длина ; }



#endif

Заголовочный файл main.cpp

#include

#include 'square.h'

с использованием пространство имен стандартный ;



интервал основной ( )

{

Квадратная коробка1 ( 10,0 , 10,0 ) ;

Квадратная коробка2 ;



расчет << ' ширина и длина коробки 1: ' << коробка1. получить ширину ( ) << ', ' << коробка1. получить длину ( ) << конец ;

расчет << ' ширина и длина коробки 2: ' << коробка2. получить ширину ( ) << ', ' << коробка2. получить длину ( ) << конец ;



коробка2 '=' коробка1 ;

расчет << «Когда Square Box 1 равен Square Box 2» << конец ;

расчет << ' ширина и длина коробки 1: ' << коробка1. получить ширину ( ) << ', ' << коробка1. получить длину ( ) << конец ;

расчет << ' ширина и длина коробки 2: ' << коробка2. получить ширину ( ) << ', ' << коробка2. получить длину ( ) << конец ;



возвращаться 0 ;

}

В этой программе пользователь вводит длину и ширину двух квадратных блоков, а затем приравнивает эти два блока и возвращает их длину и ширину:




Компилятор возвращает ошибку в строке № 14, поскольку подрядчик ожидает два аргумента, хотя ему не предоставлены аргументы:





В строке №8 компилятор возвращает ошибку в конструкторе, поскольку аргументы не указаны, хотя должны быть определенные аргументы.

Как устранить ошибку «Нет соответствующего конструктора для инициализации» в C++

Компилятор отображает ошибку в строке № 8 кода main.cpp, поскольку пытается вызвать конструктор Square по умолчанию. Компилятор не может создать конструктор по умолчанию, поскольку уже существует пользовательский конструктор, принимающий два аргумента. Поэтому укажите его параметры как:



Квадратная коробка2 ( 0 , 10 ) ;

Компилятор генерирует конструктор по умолчанию, только если у него нет определяемого пользователем конструктора. Итак, в этом случае, когда определен конструктор, конструктор по умолчанию должен быть предоставлен пользователем. Поэтому для этой цели также предоставьте аргументы по умолчанию в конструкторе с двумя аргументами в файле Square.h. Это не оставляет данные неинициализированными.

Квадрат :: Квадрат ( двойной л '=' 0 , двойной В '=' 0 )

Ошибку конструктора можно исправить, правильно вызвав и объявив конструктор и его параметры. Коды в main.cpp и Square.h изменяются согласно инструкциям, приведенным выше. И ошибка несовпадающего конструктора устранена. Это обновленный код для файла заголовка:

Это обновленный код основного файла:

Приведенные выше коды после ошибок отладки возвращают следующий вывод:

Ширина и длина двух квадратных блоков задаются пользователем, а их параметры возвращаются. Позже применяется условие, чтобы сделать оба поля равными, а затем будут возвращены их новые соответствующие значения длины и ширины.

Заключение

В C++ конструктор — это определенная функция-член, имя которой соответствует имени класса, с которым она связана. Он используется для инициализации некоторых полезных значений членов объекта. Ошибка «Нет соответствующего конструктора для инициализации» в C++ возникает, когда есть ошибка в объявлении конструктора. Обычно компилятор C++ сам генерирует конструктор, но когда конструкторы объявляются пользователем, необходимо правильное объявление параметров и тела конструктора, чтобы избежать подобных ошибок.