gpt4 book ai didi

c++ - 返回其自身类型的模板类方法的正确签名

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:03 27 4
gpt4 key购买 nike

我的特殊情况涉及自定义迭代器,但这个问题是一般性问题。我不确定如何为这个后缀增量方法编写返回类型:

template<typename T>
struct MyIterator {
size_t loc;

MyIterator operator++(int) {
MyIterator temp(*this);
++loc;
return temp;
}
};

这会编译,但这样做也是如此:

template<typename T>
struct MyIterator {

size_t loc;

MyIterator<T> operator++(int) {
MyIterator<T> temp(*this);
++loc;
return temp;
}
};

其他两个配置也可以正常工作(即,将 <T> 仅放在 MyIterator 的一个实例上)。有写这个的“正确”方法吗?重要吗?

最佳答案

Is there a "correct" way to write this?

两个名字都是正确的。然而,使用注入(inject)的类名更简单和更可取,尤其是在有多个模板参数的情况下。假设您有:

template <typename T1, typename T2, typename T3> class MyClass { ... };

在类模板中,最好使用MyClass。比MyClass<T1, T2, T3> .

Does it matter?

没有。

由于您在类的范围内,名称查找将找到您期望的内容。这与注入(inject)的类名有关,我建议您在这里阅读更多相关信息:Why is there an injected class name?


, 另一个正确的方法是 auto如 skypjack 所述,没有尾随返回类型。

关于c++ - 返回其自身类型的模板类方法的正确签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44504830/

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