Domanda

il mio compilatore mi sta torturando con questo errore esemplificazione, che ho completamente non capisco.

Ho modello di classe listItem:

template <class T>
class tListItem{
    public:
        tListItem(T t){tData=t; next=0;}
        tListItem *next;
        T data(){return tData;}
    private:
        T tData;
};

se provo per inizializzare un oggetto di esso con tipo di dati di base come per esempio:

sPacket zomg("whaever",1);
tListItem<sPacket> z(zomg);

il mio compilatore genera sempre questo errore .. l'errore è neanche gettato con i tipi primitivi.

uscita dal compilatore è:

../linkedList/tListItem.h: In constructor ‘tListItem<T>::tListItem(T) [with T = sPacket]’:
recvBufTest.cpp:15:   instantiated from here

../linkedList/tListItem.h:4: error: no matching function for call to ‘sPacket::sPacket()’

../packetz/sPacket.h:2: note: candidates are: sPacket::sPacket(const char*, int)

../packetz/sPacket.h:1: note:                 sPacket::sPacket(const sPacket&)

Non mi preoccuperei voi, ma io non voglio trascorrere 2 ore con qualcosa di stupido ..... così thx per tutte le vostre risposte

È stato utile?

Soluzione

Allo stato attuale, il codice ha bisogno di un costruttore di default per il tipo T. Modificare il costruttore di modello per:

 tListItem(T t)  : tData(t), next(0) {}

La differenza è che la versione di default costruisce un'istanza di tipo T e poi assegna ad esso. La mia versione utilizza un elenco di inizializzazione di copiare costruire l'istanza, quindi non è necessario alcun costruttore di default.

Altri suggerimenti

Ho ottenuto questo per costruire il mio proprio sistema, potrei sbagliarmi, ma penso che il problema è che non c'è un costruttore predefinito per sPacket:

  

class sPacket {

     

pubblico:

     

sPacket () {} // costruttore di default vuoto

     

sPacket (string s, int a) {s = s; a = a;}

     

};

Spero che questo è utile!

GCC può dividere i messaggi di errore in più rapporti al fine di descrivere i problemi che hanno più sedi. Potrebbe essere necessario leggere i messaggi come un unico messaggio, e può anche bisogno il messaggio che precede questo per dare un senso.

pubblicare anche i registri nel codice mark-up per forzarlo ad apparire Verbatim.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top