我浏览了该站点和其他站点上的数十篇文章,但找不到一篇解决此特定问题的文章。考虑一下我正在处理的这个 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++()
(是的)
特别是,我在尝试这样做时遇到的错误是:
invalid use of template-name 'SGraph' without an argument list
所以我的问题是:我怎样才能让这种事情发挥作用,这样我就不必在我的 .cpp 文件中编写 3 行函数头了?
最佳答案
在 SGraph::SparseGraph() {}
SGraph
是一个别名模板,所以你不能在没有参数列表的情况下使用它。
你需要像这样使用它:
template <typename NodeType, typename EdgeType>
SGraph<NodeType,EdgeType>::SparseGraph() {}
关于c++ - 模板和使用 .cpp 文件中的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834140/