Come posso forzare un parametro modello T
ad essere una sottoclasse di una classe specifica Baseclass
? Qualcosa di simile a questo:Limita il parametro modello C++ alla sottoclasse
template <class T : Baseclass> void function(){
T *object = new T();
}
Cosa stai cercando di ottenere facendo questo? – sth
Voglio solo assicurarmi che T sia effettivamente un'istanza di una sottoclasse o della classe stessa. Il codice all'interno della funzione che ho fornito è praticamente irrilevante. – phant0m
al contrario, è molto rilevante. Determina se è una buona idea o non mettere il lavoro in quel test. In molti casi (tutti?), Non è assolutamente necessario applicare tali vincoli da soli, ma piuttosto consentire al compilatore di eseguirlo durante l'istanziazione. Ad esempio, per la risposta accettata, sarebbe opportuno verificare se 'T' deriva da' Baseclass'. A partire da ora, tale controllo è implicito e non è visibile alla risoluzione di sovraccarico. Ma se non viene eseguito un simile vincolo implicito, non sembra esserci alcuna ragione per una restrizione artificiale. –