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;
};
To działa, ale jest brzydkie i przerażające. Czy istnieje lepszy/bezpieczniejszy sposób na zrobienie tego? Nie chcę, aby m_data
typu std::vector<std::shared_ptr<Interface>>
ponieważ moduł Foo
należący do działa całkowicie z Class
„s, Interface
(i Foo::GetInterfaces()
) są realizowane w interakcje z oddzielnym module, który powinien wiedzieć tylko o funkcjonalności Interface
.Jak rzutować wektor shared_ptrs z klasy pochodnej na wektor share_ptrs klasy bazowej
Daj mi znać, jeśli coś tu jest niejasne, ma to dla mnie sens, ale od pewnego czasu walczę z tym problemem.
Jaki jest wspólny wskaźnik zamiar zrobić w tej sytuacji? Nie jestem pewien, czy chce dzielić wskaźniki pomiędzy dwoma różnymi typami współdzielonych wskaźników! –
@MichaelKohne no to jest w porządku. – 111111
Ahh, przesuń semantykę, aby wygrać! powinieneś powrócić po wartości ok. –