c++ - 模板和使用 .cpp 文件中的声明

标签 c++ templates using

我浏览了该站点和其他站点上的数十篇文章,但找不到一篇解决此特定问题的文章。考虑一下我正在处理的这个 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 行函数头了?

enter image description here

最佳答案

SGraph::SparseGraph() {} SGraph是一个别名模板,所以你不能在没有参数列表的情况下使用它。
你需要像这样使用它:

template <typename NodeType, typename EdgeType>
SGraph<NodeType,EdgeType>::SparseGraph() {}

关于c++ - 模板和使用 .cpp 文件中的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834140/

相关文章:

c# - 关于Entity Framework Context Lifetime的问题

c++ - 字符串正则表达式替换需要 6 个参数但是..MinGW,CMake,w7

c++ - 判断函数参数是否为函数

c++ - 如何根据构造函数参数为类成员函数模板化代码

c++ - 嵌套模板类的模板类模板参数特化

html - 如何为 ms-outlook ://compose body parameter for Outlook for iOS 配置 HTML 正文

c++ - 传递模板供以后在其他结构/类上下文中使用

c++ - 访问私有(private)嵌套类定义的行为不一致

c++ - 如何使用C++的选择性打开特性?

c++ - 计时器功能扭曲可拖动的线段