通用函数、类和“where”关键词

发布于 2024-12-03 12:22:27 字数 550 浏览 0 评论 0原文

如何使用“where”关键字在 CLI/C++ 中向泛型类添加约束?我已经搜索了一段时间 - 但即使是 msdn 也只有 C# 文档!

所以问题的第一部分是:定义泛型类时,把“哪里”放在哪里以及它旁边可以写什么?

   generic <class T> ref class Stack   
   {
      //........
   }

问题的第二部分是:下面的函数定义中 where T:IComparable 是什么意思?

   generic <typename T> where T:IComparable
   T Function(array <T>^ x)
   {
      T max(x[0]);
      for(int i = 1; i < x->Length; i++)
      if(max-> CompareTo(x[i]) < 0)
      max = x[i];
      return max;
   }

how to use "where" keyword to add constraints to a generic class in CLI/C++? I've been searching for a while - but even msdn has only C# documentation!

So the first part of the question is: where to put "where" and what can be written next to it when defining generic classes?

   generic <class T> ref class Stack   
   {
      //........
   }

Second part of the question is: what does where T:IComparable mean in the function definition below?

   generic <typename T> where T:IComparable
   T Function(array <T>^ x)
   {
      T max(x[0]);
      for(int i = 1; i < x->Length; i++)
      if(max-> CompareTo(x[i]) < 0)
      max = x[i];
      return max;
   }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黎歌 2024-12-10 12:22:27
  1. 在您的示例中,where 位于 genericref class Stack 之间。
  2. 来自C++/CLI 文档

    <块引用>

    where 类型参数:约束列表
    

    约束列表是一个以逗号分隔的约束规范列表。该列表可以包括要由类型参数实现的接口。

  1. In your example, where goes between generic <class T> and ref class Stack.
  2. From the C++/CLI documentation:

    where type-parameter: constraint list
    

    constraint list is a comma-separated list of constraint specifications. The list can include interfaces to be implemented by the type parameter.

猫腻 2024-12-10 12:22:27

“generic where T:IComparable”意味着 T 只能是 IComparable 的派生。
因此,当泛型类的用户尝试为 T 使用不是 IComparable 的类型时,编译器会抱怨。

至于问题的第一部分,我不得不承认我很无知。也许像 Re-Sharper 或 CodeRush 这样的工具可以提供帮助。

"generic where T:IComparable" means that T can only be a derived of IComparable.
So when the user of the generic class tries to use for T a type that's not IComparable the compiler will complain.

As for the first part of the question I have to admit I am ignorant. Maybe a tool like Re-Sharper or CodeRush can help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文