Possibile duplicato: Funzione membro modello C ++ della class template chiamata dalla funzione template template class A { public: template void foo() const {} }; template void bar( const A& b ) { b.foo(); // This throws ” expected primary-expression before ‘>’ token” } Posso cambiarlo b->A::template foo(); che compila bene. Comunque posso anche cambiarlo […]
Come faccio static_assert questo modo? Forse Boost lo supporta se non C ++ o nuove funzionalità in C ++ 11? template struct foo {}; template struct bar { static_assert(FooType is indeed foo for some T,”failure”); //how? };
Questo è un caso di test minimale di qualche codice che effettivamente ho. Non riesce quando tenta di valutare a.getResult() : test.cpp: In function ‘void printStuff(const A&)’: test.cpp:6: error: expected primary-expression before ‘>’ token test.cpp:6: error: expected primary-expression before ‘)’ token Il codice è: #include template void printStuff( const A& a) { size_t value = […]
Sto davvero cominciando a capire cosa intendono le persone quando dicono che i messaggi di errore del C ++ sono piuttosto terribili per quanto riguarda i template. Ho visto errori orribilmente lunghi per cose semplici come una funzione che non corrisponde al suo prototipo. Ci sono trucchi per decifrare questi errori? EDIT: sto usando sia […]
Quando si implementa una class MessageFactory per instaziare gli oggetti Message, ho usato qualcosa come: class MessageFactory { public: static Message *create(int type) { switch(type) { case PING_MSG: return new PingMessage(); case PONG_MSG: return new PongMessage(); …. } } Funziona bene ma ogni volta che aggiungo un nuovo messaggio devo aggiungere un nuovo XXX_MSG e […]
Vedi il titolo. Ho un modello. Voglio forzare un’istanza particolare di un modello per creare un’istanza. Come faccio a fare questo? Più specificamente, puoi forzare una class template astratta per creare un’istanza? Potrei elaborare perché ho la stessa domanda. Nel mio caso sto costruendo una libreria, alcune delle implementazioni dei modelli sono grandi e includono […]
Considerando sempre che la seguente intestazione, contenente la mia class basata su modelli, è inclusa in almeno due file .CPP , questo codice viene compilato correttamente: template class TClass { public: void doSomething(std::vector * v); }; template void TClass::doSomething(std::vector * v) { // Do somtehing with a vector of a generic T } template inline […]
#ifndef __TEST__ #define __TEST__ namespace std { template class list; } template void Pop(std::list * l) { while(!l->empty()) l->pop(); } #endif e ho usato quella funzione nel mio principale. Ottengo errori Certo, so che ci sono più parametri per template per std::list (penso che sia l’allocator). Ma questo è oltre il punto. Devo conoscere la […]
Voglio dimostrare l’uso di Adapter Pattern al mio team. Ho letto molti libri e articoli online. Tutti citano un esempio che è utile per comprendere il concetto (Shape, Memory Card, Electronic Adapter ecc.), Ma non esiste un case study reale. Potete per favore condividere qualsiasi studio di caso su Adapter Pattern? ps Ho provato a […]
Ho un modello handlebars.js, proprio come questo: {{externalValue}} {{#each myCollection}} {{title}} {{externalValue}} {{/each}} E questo è l’output generato: myExternalValue First element Second element Third element Come previsto, posso accedere ai campi id e title di ogni elemento di myCollection per generare la mia selezione. E al di fuori della selezione, la mia variabile externalValue viene […]