Tôi đang cố gắng để thực hiện phương pháp chaining trong C++, mà hóa ra là khá dễ dàng nếu cuộc gọi constructor của một lớp là một tuyên bố riêng biệt, ví dụ:phương pháp chaining bao gồm constructor lớp
Foo foo;
foo.bar().baz();
Nhưng ngay khi hàm gọi hàm tạo trở thành một phần của chuỗi phương thức, trình biên dịch phàn nàn về việc mong đợi ";" thay cho "." ngay lập tức sau khi gọi hàm tạo:
Foo foo().bar().baz();
Tôi tự hỏi bây giờ nếu điều này thực sự có thể trong C++. Đây là lớp học thử nghiệm của tôi:
class Foo
{
public:
Foo()
{
}
Foo& bar()
{
return *this;
}
Foo& baz()
{
return *this;
}
};
Tôi cũng tìm thấy một ví dụ cho "giao diện thông thạo" trong C++ (http://en.wikipedia.org/wiki/Fluent_interface#C.2B.2B) mà có vẻ là chính xác những gì tôi đang tìm kiếm. Tuy nhiên, tôi nhận được lỗi trình biên dịch tương tự cho mã đó.
Trình biên dịch này là gì? –
Ồ, tôi quên đề cập đến điều này: Visual Studio 2010 (Professional). – jena
Foo foo = bar(). Baz(). Bang(); –