Impone che tutte le classi derivate e le sottoclassi definiscano sempre una funzione membro

-3

Come fare Applico che tutte le classi che hanno la classe A come base definiscono EveryClassHasThis ()?

Class A {
public:
  virtual void EveryClassHasThis() = 0;
}

Ad esempio nel seguente caso semplice; come garantire che la classe B (deve essere non astratta) e la classe C definiscano entrambi questo metodo?

Class A (Abstract) -> Class B
                         |
                          -> Class C

EDIT: Per chiarire la mia domanda ... vorrei sapere quali sono gli schemi di progettazione che potrei esaminare per aiutarmi a ottenere questo effetto.

    
posta theCuriousOne 06.07.2018 - 01:57
fonte

1 risposta

0

Vuoi composizione, invece di ereditarietà.

La classe C non dovrebbe ereditare dalla classe B. Invece, la classe C è una dipendenza di classe B, e dovrebbe essere passata a una nuova istanza di B come argomento del costruttore:

class B : public A {
private:
    &C c;
public:
    B(&C c) {
        this.c = c;
    }
}

class C {
public:
    void EveryClassHasThis() {
        // ...
    }
}

(Perdona il codice C ++ scadente. Non è la mia prima lingua)

    
risposta data 06.07.2018 - 11:35
fonte

Leggi altre domande sui tag