我已浏览过本网站上的数十篇文章和其他文章,但我无法找到解决此问题的单篇文章。考虑一下我正在研究的SparseGraph课程:
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行函数头文件?
答案 0 :(得分:0)
在SGraph::SparseGraph() {}
SGraph
中是别名模板,因此您无法在不使用参数列表的情况下使用它。
你需要像这样使用它:
template <typename NodeType, typename EdgeType>
SGraph<NodeType,EdgeType>::SparseGraph() {}