Injeção de dependência em C ++

Essa também é uma pergunta que eu fiz em um comentário em uma das publicações de Miško Heverygoogle fala que estava lidando com injeção de dependência, mas foi enterrado nos comentários.

Gostaria de saber como pode a fábrica / construtor passo de conectar as dependências juntos pode trabalhar em C ++.

I.e. temos uma classe A que depende de B. O construtor alocará B na pilha, passará um ponteiro para B no construtor de A enquanto também alocará na pilha e retornará um ponteiro para A.

Quem limpa depois? É bom deixar o construtor limpar depois de terminar? Parece ser o método correto, pois na conversa diz que o construtor deve configurar objetos que devem ter a mesma vida útil ou pelo menos que as dependências tenham vida útil mais longa (eu também tenho uma pergunta sobre isso). O que quero dizer com código:

class builder {
public:
    builder() :
        m_ClassA(NULL),m_ClassB(NULL) {
    }
    ~builder() {
        if (m_ClassB) {
            delete m_ClassB;
        }
        if (m_ClassA) {
            delete m_ClassA;
        }
    }
    ClassA *build() {
        m_ClassB = new class B;
        m_ClassA = new class A(m_ClassB);
        return m_ClassA;
    }
};

Agora, se houver uma dependência que dure mais do que a vida útil do objeto em que estamos injetando (digamos que ClassC é essa dependência), entendo que devemos alterar o método de compilação para algo como:

ClassA *builder::build(ClassC *classC) {
    m_ClassB = new class B;
    m_ClassA = new class A(m_ClassB, classC);
    return m_ClassA;
}

Qual é a sua abordagem preferida?

questionAnswers(8)

yourAnswerToTheQuestion