gpt4 book ai didi

c++ - 如何缩短模板类的类型名称语法

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:15 24 4
gpt4 key购买 nike

我有一个模板类,其内部类型定义如下:

template <class T>
class BinarySearchTree
{
private:
struct Node
{
T m_value;
Node* m_left;
Node* m_right;

Node(const T& value = T(),
Node* const left = nullptr,
Node* const right = nullptr)
: m_value(value)
, m_left(left)
, m_right(right)
{

}
};

public:
const Node* find(const T& value) const;
};


template <class T>
const typename BinarySearchTree<T>::Node* BinarySearchTree<T>::find(const T& value) const
{
// some code here
}

所以有很多函数返回Node*而且每次写typename BinarySearchTree<T>::Node*都很烦人对于类外的函数返回类型。有没有更好的办法?

最佳答案

使用尾随返回类型:

template <class T>
auto BinarySearchTree<T>::find(const T& value) const -> Node*
{
// some code here
}

BinarySearchTree<T>::find 之后的所有内容使用类的范围进行评估。

这允许您将定义放在类之外,而无需使用类型别名来缩短名称。

关于c++ - 如何缩短模板类的类型名称语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com