gpt4 book ai didi

c++ - “numeric_limits”不是模板

转载 作者:太空宇宙 更新时间:2023-11-04 16:19:53 25 4
gpt4 key购买 nike

我有一个错误

limits:30:29: error: 'numeric_limits' is not a template

在文件中,它为特定类重载了 std::numeric_limits:

  // file "limits"
#include <limits>

namespace std
{
template<typename T> struct numeric_limits<XX::YY<T> > : public
numeric_limits<typename XX::YY<T>::ZZ>
{
private:
<...>

什么是问题?

最佳答案

您正在尝试创建一个继承自 std::numeric_limitsstd::numeric_limits —— 但是当您到达 public numeric_limits 时... 部分,您已经声明了自己的模板(仍然不完整),该模板已命名为 numeric_limits,因此它试图从自身继承而不是现有的 std: :numeric_limits.

std::numeric_limits 不打算作为基类,也不提供任何虚函数,因此从它继承是没有用的。要使 numeric_limits 正确处理您的特定类,您需要为该类型定义 numeric_limits 的特化:

#include <limits> // get base template definition + standard specializations

namespace std {

template<> // define your specialization
class numeric_limits<MyType> {
// ...
};

}

请注意,这是允许您向 std 命名空间添加内容的唯一情况之一——在用户定义的类型上添加现有模板的新特化。

关于c++ - “numeric_limits”不是模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18259129/

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