В 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++ сам генерирует конструктор, но когда конструкторы объявляются пользователем, необходимо правильное объявление параметров и тела конструктора, чтобы избежать подобных ошибок.