【问题标题】:Eclipse/CDT/MinGW C++ and strange errorsEclipse/CDT/MinGW C++ 和奇怪的错误
【发布时间】: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++) {
                      ^

怎么了?

【问题讨论】:

标签: c++ eclipse gcc mingw eclipse-cdt


【解决方案1】:

graph::findElement 函数与一个模板相关联,并且需要一个专门的模板或实例。

解决办法是把函数和模板一起放在头文件中,加上模板规范:

template <class T>
int
graph<t>::findElement(T a)
{
//...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-22
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多