Cách giải quyết lỗi “Không có hàm tạo phù hợp để khởi tạo” trong C++

Cach Giai Quyet Loi Khong Co Ham Tao Phu Hop De Khoi Tao Trong C



Trong C++, hàm tạo là một hàm thành viên cụ thể lấy tên theo tên của lớp mà nó liên quan đến. Nó được sử dụng để khởi tạo một số giá trị hữu ích cho các thành viên của đối tượng. Nếu người dùng không xác định hàm tạo thì trình biên dịch C++ sẽ tạo một hàm tạo mặc định và không có tham số cũng như phần thân trống. Tuy nhiên, khi có một hàm tạo do người dùng định nghĩa thì cần phải khai báo phần thân và các tham số của nó.

Điều gì gây ra lỗi 'Không có hàm tạo phù hợp để khởi tạo' trong C++?

Khi xử lý các hàm tạo trong C++, lỗi 'Không có hàm tạo phù hợp để khởi tạo' xảy ra, điều này thường xảy ra do khi trình biên dịch gọi hàm tạo mặc định không được tạo, do đó bạn phải tự khai báo các tham số và phần thân của hàm tạo. Việc không khai báo các tham số thích hợp sẽ dẫn đến loại lỗi xây dựng này.







Tạo một tệp văn bản đơn giản, dán mã của hàm Square() vào đó và lưu nó với phần mở rộng .h. Bây giờ dán tệp này vào thư mục include của thư mục bin của trình biên dịch CPP. Bây giờ, khi gọi tệp tiêu đề này trong main.cpp, tệp này sẽ được trình biên dịch đọc.



Tệp tiêu đề Square.h

#ifndef SQUARE_H

#xác định SQUARE_H


lớp học Quảng trường {

riêng tư :

gấp đôi chiều dài ;

gấp đôi chiều rộng ;

công cộng :

Quảng trường ( gấp đôi , gấp đôi ) ;

gấp đôi lấy chiều dài ( ) hằng số ;

gấp đôi lấy chiều rộng ( ) hằng số ;

} ;



Quảng trường :: Quảng trường ( gấp đôi tôi, gấp đôi TRONG ) {

chiều dài = tôi ;
chiều rộng = TRONG ;

}



gấp đôi Quảng trường :: lấy chiều rộng ( ) hằng số { trở lại chiều rộng ; }

gấp đôi Quảng trường :: lấy chiều dài ( ) hằng số { trở lại chiều dài ; }



#endif

Tệp tiêu đề main.cpp

#include

#include 'vuông.h'

sử dụng không gian tên tiêu chuẩn ;



int chủ yếu ( )

{

Hộp vuông1 ( 10,0 , 10,0 ) ;

Hộp vuông2 ;



cout << ' chiều rộng và chiều dài của hộp 1: ' << hộp1. lấy chiều rộng ( ) << ',' << hộp1. lấy chiều dài ( ) << kết thúc ;

cout << ' chiều rộng và chiều dài của hộp 2: ' << hộp2. lấy chiều rộng ( ) << ',' << hộp2. lấy chiều dài ( ) << kết thúc ;



hộp2 = hộp1 ;

cout << 'Khi Ô vuông 1 bằng Ô vuông 2' << kết thúc ;

cout << ' chiều rộng và chiều dài của hộp 1: ' << hộp1. lấy chiều rộng ( ) << ',' << hộp1. lấy chiều dài ( ) << kết thúc ;

cout << ' chiều rộng và chiều dài của hộp 2: ' << hộp2. lấy chiều rộng ( ) << ',' << hộp2. lấy chiều dài ( ) << kết thúc ;



trở lại 0 ;

}

Trong chương trình này, người dùng nhập chiều dài và chiều rộng của hai ô vuông, sau đó so sánh hai ô đó bằng nhau và trả về chiều dài và chiều rộng của chúng:




Trình biên dịch trả về lỗi ở dòng #14 vì nhà thầu mong đợi hai đối số trong khi không có đối số nào được cung cấp cho nó:





Ở dòng #8, trình biên dịch trả về lỗi trong hàm tạo vì các đối số không được cung cấp trong khi phải có các đối số được xác định.

Cách giải quyết lỗi “Không có hàm tạo phù hợp để khởi tạo” trong C++

Trình biên dịch hiển thị lỗi ở dòng #8 của mã main.cpp do hàm tạo mặc định của Square được cố gắng gọi. Trình biên dịch không thể tạo hàm tạo mặc định vì đã có một hàm tạo do người dùng định nghĩa nhận hai đối số. Do đó, chỉ định các tham số của nó là:



Hộp vuông2 ( 0 , 10 ) ;

Trình biên dịch chỉ tạo ra một hàm tạo mặc định nếu nó không có bất kỳ hàm tạo nào do người dùng định nghĩa. Vì vậy, trong trường hợp này khi có một hàm tạo được xác định, hàm tạo mặc định phải được người dùng cung cấp. Vì vậy, với mục đích này, hãy cung cấp các đối số mặc định trong hàm tạo hai đối số trong tệp Square.h. Điều này không để lại dữ liệu chưa được khởi tạo.

Quảng trường :: Quảng trường ( gấp đôi tôi = 0 , gấp đôi TRONG = 0 )

Lỗi hàm tạo có thể được sửa bằng cách gọi và khai báo hàm tạo cũng như các tham số của nó một cách chính xác. Các mã trong main.cpp và Square.h được thay đổi theo hướng dẫn ở trên. Và lỗi hàm tạo không khớp đã được giải quyết. Đây là mã được cập nhật cho tệp tiêu đề:

Đây là mã được cập nhật cho tệp chính:

Các mã trên sau khi gỡ lỗi sẽ trả về kết quả đầu ra sau:

Chiều rộng và chiều dài của hai ô vuông do người dùng cung cấp và các tham số của chúng được trả về. Sau đó, một điều kiện được áp dụng để làm cho cả hai hộp bằng nhau, sau đó giá trị chiều dài và chiều rộng tương ứng mới của chúng sẽ được trả về.

Phần kết luận

Trong C++, hàm tạo là một hàm thành viên cụ thể lấy tên theo tên của lớp mà nó liên quan đến. Nó được sử dụng để khởi tạo một số giá trị hữu ích cho các thành viên của đối tượng. Lỗi 'Không có hàm tạo phù hợp để khởi tạo' trong C++ xảy ra khi có lỗi trong khai báo hàm tạo. Thông thường, trình biên dịch C++ tự tạo một hàm tạo, nhưng khi hàm tạo được người dùng khai báo thì phải khai báo đúng các tham số và nội dung của hàm tạo để tránh gặp phải các lỗi như vậy.