cuốn sách gpt4 ai đã làm

C++ - Khởi tạo thành viên lớp bằng cách sử dụng phiên bản

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 14:13:40 25 4
mua khóa gpt4 Nike

Câu hỏi của tôi như sau: Giả sử tôi có:

lớp học
{
public:
Foo() {}
void setInt(int i) { myInt = i }
int getInt() { return myInt }
private:
int myInt;
};

thanh lớp
{
public:
Bar(Foo f) { /* làm gì đó với f.getInt() */ }
};

Bây giờ tôi có một lớp khác với Bar là biến thành viên:

người dùng lớpBar
{
public:
BarUser();
private:
Thanh bar;
};

Tôi muốn viết một hàm tạo cho BarUser, nhưng tôi muốn khởi tạo Bar với thành viên Foo là số nguyên bằng 3. Ngay lập tức:

Foo f;
f.setInt(3);
thanh b(f);

Nhưng vì tôi có Bar là thành viên của lớp nên tôi không thể viết tất cả mã này vào danh sách khởi tạo... Ý tôi là:

BarUser::BarUser() : bar(/* Foo sau khi thực hiện f.setInt(3) */)
{ ... }

Giả sử Bar không cho phép toán tử gán - làm cách nào để khởi tạo nó như mong đợi?

Cảm ơn!

câu trả lời hay nhất

nếu bạn không thể thay đổiFoo, viết hàm:

Foo make_foo(int i) { 
Foo f;
f.setInt(i);
trả lại f;
}

Sau đó sử dụng thanh(make_foo(3)) khởi tạo.

bạn cho Foo một hàm tạo nhưng không được đưa ra int Các nhà xây dựng kiểu như tự bắn vào chân mình. Tốt nhất là bạn nên rõ ràng Trình xây dựng được thêm vào để áp dụng int của Foo.

Về C++ - Khởi tạo thành viên lớp bằng cách sử dụng phiên bản, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/12894873/

25 4 0
Bài viết khuyến nghị: c++ - 具体 "getter setter"专用对象
Bài viết khuyến nghị: javascript không thể tính được kiểu lớp được tính toán
Bài viết khuyến nghị: javascript-
Xem sitemap của VNExpress