class Interface
{
};
class Class : public Interface
{
};
class Foo
{
public:
std::vector<std::shared_ptr<Interface>>& GetInterfaces()
{
return *(std::vector<std::shared_ptr<Interface>>*)(&m_data);
//return m_data;
}
private:
std::vector<std::shared_ptr<Class>> m_data;
};
Điều này hoạt động nhưng rất xấu và đáng sợ. Có cách nào tốt hơn/an toàn hơn để làm điều đó không? Tôi không muốn tạo m_data
loại std::vector<std::shared_ptr<Interface>>
vì mô-đun Foo
thuộc về các tác phẩm hoàn toàn với Class
, Interface
(và Foo::GetInterfaces()
) được triển khai để tương tác với một mô-đun riêng biệt chỉ biết về chức năng Interface
.Cách truyền véc tơ của shared_ptrs của một lớp dẫn xuất đến một véc tơ của share_ptrs của một lớp cơ sở
Hãy cho tôi biết nếu bất kỳ điều gì ở đây không rõ ràng, điều đó hợp lý với tôi nhưng tôi đã đập đầu vào vấn đề này một lúc.
gì con trỏ chia sẻ sẽ làm gì trong tình huống đó? Tôi không chắc chắn nó sẽ muốn chia sẻ con trỏ giữa hai loại khác nhau của con trỏ chia sẻ! –
@MichaelKohne không có gì là tốt. – 111111
Ahh, di chuyển ngữ nghĩa cho chiến thắng! nên làm cho trở về bởi giá trị ok. –