|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
[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);
|
|
|
|
|
|
#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 20:09. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
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.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
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;
}
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
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 10:06. |
|
|
|
|
|
#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: 00:22.




















