|
|
|
|
Strumenti |
09-07-2013, 18:30 | #1 |
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1838
|
[C++] Non riesco a richiamare un metodo di una classe con template
Ho un file .h che contiene questo codice:
Codice:
template <class node_type, class edge_type> class Graph { public: //define typedef with easy names typedef edge_type EdgeType; typedef node_type NodeType; //a vector of the nodes in the graph typedef std::vector<node_type> NodeVector; //a double linked list of edges typedef std::list<edge_type> EdgeList; //Adjacency Lists representing the graph - a vector with many double linked list of edges typedef std::vector<EdgeList> EdgeListVector; ...cose superflue int AddNode(NodeType node); ...altre cose superflue }; template <class node_type, class edge_type> int Graph<node_type, edge_type>::AddNode(node_type node) { ... } Sono arrivato a questo punto e non so come richiamare la funzione. Codice:
//istantiate a graph Graph<GraphNode, GraphEdge> *graph = new Graph<GraphNode, GraphEdge>(false); //create a node GraphNode *node = new GraphNode(0); //ERROR - expected primary expression before token int result = graph->AddNode<GraphNode, GraphEdge>(node); |
09-07-2013, 19:06 | #2 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
Codice:
vector<int> a(5); a.push_back(6); Codice:
a.push_back<int>(6); Codice:
int result = graph->AddNode(node); Ultima modifica di vendettaaaaa : 09-07-2013 alle 19:09. |
|
09-07-2013, 19:31 | #3 |
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1838
|
Grazie mille. In effetti avevo già provato a scriverlo in quel modo ma siccome mi dava comunque errore poi avevo provato altri modi. Mi accorgo ora che gli errori che da sono in altre parti del codice.
|
09-07-2013, 20:26 | #4 |
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1838
|
Mi sono impataccato di nuovo, ho commentato completamente il codice dentro la funzione che richiamo così sono sicuro che non ci siano errori, sulla chiamata però mi da errore:
17 C:\Users\Ivan\Documents\C++ development\main.cpp invalid conversion from `GraphNode*' to `int' Il codice è sempre questo: Codice:
int main(int argc, char *argv[]) { //istantiate a graph Graph<GraphNode, GraphEdge> *graph = new Graph<GraphNode, GraphEdge>(false); //create a node GraphNode *node = new GraphNode(0); int result = graph->AddNode(node); //cout << "Created Node " << result << endl; system("PAUSE"); return EXIT_SUCCESS; } |
09-07-2013, 21:08 | #5 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
|
|
09-07-2013, 21:43 | #6 |
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1838
|
Pardon, è sempre la stessa. E' la riga in cui chiamo la funzione.
EDIT: risolto La chiamata alla funzione doveva avere il dereference sul parametro node: Codice:
int result = graph->AddNode(*node); Codice:
int result = graph->AddNode(node); Ultima modifica di -Ivan- : 10-07-2013 alle 09:06. |
10-07-2013, 10:24 | #7 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
Tranquillo cmq, pian piano tornerà tutto dolorosamente in mente |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:16.