c++ - 为多个类或函数声明一次模板<typename T>

标签 c++ templates c++11

我不知道这个问题是否有意义;我有几个通用类型类的公共(public)方法。

template <typename T>
bool className<T>::isEmpty() const {
    return root == nullptr;
}

template <typename T>
className<T>::className() {
    root = nullptr;
    ...............
}

template <typename T>
treeNode<T>* className<T> :: routine(treeNode<T>* node) {
    .............
    .............
}

我不得不写 template<typename T>每次我实现一个方法。这是不必要的冗余。有没有办法写template<typename T>一次并将其用于所有方法,例如 -

template<typename T>
void className<T>:: func1() {
     ............
}
void className<T>:: func2() {
     ............
}
void className<T>:: func3(T const& param) {
     ............
}
// somehow ending template<typename T> scope or no need to end as writing 
// another template<typename T> will vanish previous effect

最佳答案

嗯,作为@T.C.说——

不幸的是没有。如果你不想要额外的输入,将你的函数定义放在类定义中,特别是对于像 isEmpty() 这样的微不足道的实现函数。或默认构造函数。

此外,宏可用于避免冗长的冗余代码,即 #define Generic template<typename T> .

关于c++ - 为多个类或函数声明一次模板<typename T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594885/

相关文章:

c++ - 运行 Opencv 示例代码时出错

c++ - 在发送原始数据之前添加延迟?

c++ - 自动和自动&和常量

c# - 关于与托管代码的互操作性,开发人员应该了解哪些内容

c++ - arm gcc5 的交叉编译 - 正确使用 memcpy

php - Codeigniter - 让我的 Controller 更干

c++ - 带有 g++ -O2(或 -Os、-O、-O1、...)的模板警告

C++11 constexpr 过时的模板元编程?

c++ - 如何使用模板将 lambda 转换为 std::function

c++ - 如果我的类正确管理资源,那么拥有智能指针有什么意义呢?