Tôi muốn xây dựng một lớp cơ sở (trừu tượng) (gọi là type::base
) với một số tính phổ biến và giao diện thông thạo, vấn đề tôi đang đối mặt là kiểu trả về của tất cả các phương thức đóGiao diện thông thạo và kế thừa trong C++
class base {
public:
base();
virtual ~base();
base& with_foo();
base& with_bar();
protected:
// whatever...
};
Bây giờ tôi có thể làm cho phân nhóm, ví dụ:
class my_type : public base {
public:
myType();
// more methods...
};
vấn đề này được đưa ra khi sử dụng những phân nhóm như thế này:
my_type build_my_type()
{
return my_type().with_foo().with_bar();
}
Điều này sẽ không biên dịch vì chúng tôi đang trả lại cơ sở thay vì my_type.
Tôi biết rằng tôi có thể chỉ:
my_type build_my_type()
{
my_type ret;
ret.with_foo().with_bar();
return ret;
}
Nhưng tôi đã suy nghĩ làm thế nào tôi có thể thực hiện nó, và tôi đã không tìm thấy bất kỳ ý tưởng hợp lệ, một số gợi ý?
Tôi đã xóa nội dung không gian tên vì nó không có gì (theo như tôi có thể thấy) để làm với câu hỏi –