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;
};
Questo funziona ma è brutto e spaventoso. Esiste un modo migliore/più sicuro per farlo? Non voglio fare m_data
di tipo std::vector<std::shared_ptr<Interface>>
perché il modulo Foo
appartiene funziona interamente con Class
's, Interface
(e Foo::GetInterfaces()
) sono implementati per interagire con un modulo separato che dovrebbe sapere solo la funzionalità Interface
.Come trasmettere un vettore di shared_ptrs di una classe derivata a un vettore di share_ptrs di una classe base
Fammi sapere se qualcosa qui non è chiaro, ha senso per me, ma ho battuto la testa contro il problema per un po '.
Qual è il puntatore condiviso intenzione di fare in quella situazione? Non sono sicuro che vorrà condividere i puntatori tra due diversi tipi di puntatore condiviso! –
@MichaelKohne no questo va bene. – 111111
Ah, sposta la semantica per la vittoria! dovrebbe rendere il ritorno di valore ok. –