Hướng dẫn passing object to constructor c++ - chuyển đối tượng tới hàm tạo C++
Tôi muốn chuyển bằng cách tham chiếu một đối tượng cho một người đối tác, nhưng tôi gặp vấn đề, bởi vì tôi không biết làm thế nào để ràng buộc nó với biến của lớp. Show
Ở đây tôi đăng một số đoạn mã của tôi và lỗi tăng lên.
Trong trường hợp này, lỗi tăng là:
Và nếu tôi viết
Lỗi là
Và khi tôi gọi hàm xây dựng, tôi có nên gọi như thế này không? ShortestPath (đồ thị); Đã hỏi ngày 2 tháng 11 năm 2013 lúc 18:51Nov 2, 2013 at 18:51
0 Bạn phải thay đổi mã của mình theo cách này:
or:
Đã trả lời ngày 2 tháng 11 năm 2013 lúc 18:55Nov 2, 2013 at 18:55
Abdolahabdolahabdolah 5261 Huy hiệu vàng4 Huy hiệu bạc13 Huy hiệu đồng1 gold badge4 silver badges13 bronze badges 2 Hai giải pháp khả thi: Vượt qua biểu đồ bằng cách tham chiếu và lưu trữ con trỏ
Vượt qua biểu đồ bằng con trỏ và lưu trữ con trỏ
Đã trả lời ngày 2 tháng 11 năm 2013 lúc 18:55Nov 2, 2013 at 18:55
Abdolahabdolahazz 5261 Huy hiệu vàng4 Huy hiệu bạc13 Huy hiệu đồng3 gold badges29 silver badges58 bronze badges Hai giải pháp khả thi:
Vượt qua biểu đồ bằng cách tham chiếu và lưu trữ con trỏ
Vượt qua biểu đồ bằng con trỏ và lưu trữ con trỏNov 2, 2013 at 19:27
Azzazzmasoud 5.7923 huy hiệu vàng29 Huy hiệu bạc58 Huy hiệu đồng16 gold badges134 silver badges204 bronze badges 2
Vì 5 của bạn là một con trỏ tới 6, bạn nên sử dụng bên dưới (như một câu trả lời khác): 0Nhưng, nếu bạn chắc chắn rằng tuổi thọ của 5 đã vượt qua lớn hơn và bằng tuổi thọ của đối tượng ____ 18. Bạn có thể sử dụng tài liệu tham khảo thay vì con trỏ:Nov 2, 2013 at 18:52
Đã trả lời ngày 2 tháng 11 năm 2013 lúc 19:27Fred Larson Masoudmasoud15 gold badges112 silver badges168 bronze badges 3 Cải thiện bài viết Lưu bài viết Cải thiện bài viết Lưu bài viết Đọc Bàn luậnTrong C ++, chúng ta có thể chuyển các đối tượng lớp của lớp dưới dạng đối số và cũng trả lại chúng từ một hàm giống như cách chúng ta vượt qua và trả về các biến khác. Không có từ khóa hoặc tệp tiêu đề đặc biệt nào được yêu cầu để làm như vậy. & NBSP; 1Vượt qua một đối tượng như đối số In this Example there is a class which has an integer variable ‘a’ and a function ‘add’ which takes an object as argument. The function is called by one object and takes another as an argument. Inside the function, the integer value of the argument object is added to that on which the ‘add’ function is called. In this method, we can pass objects as an argument and alter them. Để truyền một đối tượng làm đối số, chúng tôi viết tên đối tượng làm đối số trong khi gọi hàm theo cách chúng tôi thực hiện cho các biến khác.syntax: & nbsp; & nbsp; 9Ví dụ: Trong ví dụ này, có một lớp có biến số nguyên ‘A và một hàm‘ Thêm, lấy một đối tượng làm đối số. Hàm được gọi bởi một đối tượng và lấy một đối tượng khác làm đối số. Bên trong hàm, giá trị số nguyên của đối tượng đối số được thêm vào đó là hàm ‘Thêm hàm được gọi. Trong phương pháp này, chúng ta có thể truyền các đối tượng như một đối số và thay đổi chúng. & Nbsp; & nbsp; CPP 5 6 0 1 2 3 4 7 4 5 6 7 8 9 7 8 9 4 7 4 7 1 2 7 8 7 0 1 2 8 1 7 6 7 8 3 2 7 6 7 0 9 2 8 1 7 6 7 8 3 2 7 4 5 8Đầu ra 2ShortestPath(Graph& graph): *graph(graph){};[...] 7 class ShortestPath{ public: ShortestPath(Graph& graph): graph(&graph){};[...] private: Graph *graph; } 0 class ShortestPath{ public: ShortestPath(Graph& graph): graph(&graph){};[...] private: Graph *graph; } 5 class ShortestPath{ public: ShortestPath(Graph& graph): graph(&graph){};[...] private: Graph *graph; } 6Syntax: 3
Để truyền một đối tượng làm đối số, chúng tôi viết tên đối tượng làm đối số trong khi gọi hàm theo cách chúng tôi thực hiện cho các biến khác.syntax: & nbsp; & nbsp; 9Ví dụ: Trong ví dụ này, có một lớp có biến số nguyên ‘A và một hàm‘ Thêm, lấy một đối tượng làm đối số. Hàm được gọi bởi một đối tượng và lấy một đối tượng khác làm đối số. Bên trong hàm, giá trị số nguyên của đối tượng đối số được thêm vào đó là hàm ‘Thêm hàm được gọi. Trong phương pháp này, chúng ta có thể truyền các đối tượng như một đối số và thay đổi chúng. & Nbsp; & nbsp; CPP 5 6 0 1 2 7 9 7 4 5 03 5 05 3 4 7 8 9 7 8 9 4 7 16 7 6 7 8 7 22 7 0 1 2 8 1 7 8 33 0 7 8 37 38 7 8 41 2 7 44 7 0 9 2 8 1 7 8 33 0 7 8 37 38 7 8 41 2 7 4 5 8Đầu ra 4Bạn có thể chuyển đối tượng cho một hàm tạo?Bạn có thể sử dụng bất kỳ loại dữ liệu nào cho tham số của phương thức hoặc hàm tạo. Điều này bao gồm các loại dữ liệu nguyên thủy, chẳng hạn như đôi, phao và số nguyên, như bạn đã thấy trong phương thức tính toán và các loại dữ liệu tham chiếu, chẳng hạn như các đối tượng và mảng.. This includes primitive data types, such as doubles, floats, and integers, as you saw in the computePayment method, and reference data types, such as objects and arrays.
Có thể truyền đối tượng như một đối số trong trình xây dựng sao chép không?Trả lời: Không, trong C ++, một hàm tạo sao chép không hỗ trợ vượt qua giá trị nhưng chỉ vượt qua tham chiếu.Nó không thể chấp nhận tham số đối tượng theo giá trị và nó phải luôn luôn nhận nó dưới dạng tham chiếu.Một lỗi, hàm tạo bản sao bất hợp pháp sẽ bị ném nếu chúng ta nhận được đối tượng theo giá trị.No, in C++, a copy constructor doesn't support pass by value but pass by reference only. It cannot accept object parameter by value and it should always receive it as a reference. An error, “Illegal copy constructor” will be thrown if we receive object by value.
Tại sao chúng ta không thể chuyển một đối tượng theo giá trị cho một hàm tạo sao chép?Chuyển bằng giá trị (chứ không phải bằng tham chiếu) có nghĩa là một bản sao cần được thực hiện.Vì vậy, việc chuyển giá trị vào hàm tạo bản sao của bạn có nghĩa là bạn cần tạo một bản sao trước khi trình xây dựng bản sao được gọi, nhưng để tạo một bản sao, trước tiên bạn cần gọi Trình xây dựng sao chép.Lưu câu trả lời này.. So passing by value into your copy constructor means you need to make a copy before the copy constructor is invoked, but to make a copy you first need to call the copy constructor. Save this answer.
Chúng ta có thể truyền các đối tượng dưới dạng tham số không?Vượt qua một đối tượng dưới dạng tham số rất giống với bất kỳ tham số nào khác.Bạn chỉ cần sử dụng tên của lớp đối tượng, trong trường hợp của bạn, thay cho bất kỳ loại biến nào khác.. You just need to use the name of the object class, in your case Fruit , in place of any other variable type. |