模板和在.cpp文件中使用声明

时间:2017-05-07 16:52:43

标签: c++ templates using

我已浏览过本网站上的数十篇文章和其他文章,但我无法找到解决此问题的单篇文章。考虑一下我正在研究的S​​parseGraph课程:

Sparse_Graph.h

template <typename NodeType, typename EdgeType>
class SparseGraph
{
    //...
public:
    SparseGraph();
    //...
};

为了缩短我的.cpp文件中的代码,我希望做类似的事情:

Sparse_Graph.cpp

#include "Sparse_Graph.h"

template<typename NodeType, typename EdgeType>
using SGraph = SparseGraph<NodeType, EdgeType>;

SGraph::SparseGraph() {}

这对我来说特别重要,因为后来在这个文件中我有一个迭代器函数的声明,写成:

template <typename NodeType, typename EdgeType>
typename SparseGraph<NodeType, EdgeType>::EdgeIterator& 
SparseGraph<NodeType, EdgeType>::EdgeIterator::operator++()

(是的)

特别是,我在尝试这个时遇到的错误是:

  

无效使用模板名称&#39; SGraph&#39;没有参数列表

所以我的问题是:我怎样才能让这种事情发挥作用所以我不必在我的.cpp文件上写下3行函数头文件?

enter image description here

1 个答案:

答案 0 :(得分:0)

SGraph::SparseGraph() {} SGraph中是别名模板,因此您无法在不使用参数列表的情况下使用它。 你需要像这样使用它:

template <typename NodeType, typename EdgeType>
SGraph<NodeType,EdgeType>::SparseGraph() {}
相关问题