【发布时间】:2013-11-19 16:02:22
【问题描述】:
我为 GCC C++ 编写代码。我用名为“graph”的模板编写类。
graph.h:
#include <vector>
template <class T> struct graphNode {
T* elementLink;
std::vector<int> edges;
};
template <class T> class graph {
private:
std::vector< graphNode<T> > nodes;
int findElement (T);
public:
void add(T);
void addEdge(T, T);
void deleteEdge(T, T);
bool isEmpty();
std::vector<T> getAdjacent(T);
};
graph.cpp(显然,不是最终的):
#include "graph.h"
int graph::findElement(T a) {
for (int i = 0; i < nodes.size(); i++) {
if (nodes[i] == a) {
return i;
}
}
return -1;
}
我得到了这些构建错误:
..\graph.cpp:3:24: error: 'template<class T> class graph' used without template parameters
template <class T> int graph::findElement(T a) {
^
..\graph.cpp: In function 'int findElement(T)':
..\graph.cpp:4:22: error: 'nodes' was not declared in this scope
for (int i = 0; i < nodes.size(); i++) {
^
怎么了?
【问题讨论】:
-
无关:迟早你会遇到另一个问题,所以也花点时间阅读:Why can templates only be implemented in the header file?。
标签: c++ eclipse gcc mingw eclipse-cdt