gpt4 book ai didi

c++ - 在 C++ 中是否有 C# 中的关键字 "where"的类似物?

转载 作者:行者123 更新时间:2023-12-01 14:03:01 26 4
gpt4 key购买 nike

我需要在 C++ 中创建一个模板类。我需要确保模板参数的类型是具有 1 个 int 字段和 1 个 string 字段的类(可以有更多字段,但这些是强制性的)。

例如,在 C# 中,我可以定义一个带有方法或属性的接口(interface),如下所示:

interface MyInterface {
int GetSomeInteger();
string GetSomeString();
}

然后我可以在我的模板类中使用它:
class MyClass<T> where T: MyInterface {}

有没有办法在 C++ 中做这样的事情?

最佳答案

C++20 为您提供最接近 C# 的解决方案:

#include <concepts>

template <class T>
concept MyInterface = requires(T x)
{
{ x.GetSomeInteger() } -> std::same_as<int>;
};

进而:
template <MyInterface T>
struct MyClass
{
// ...
};

关于c++ - 在 C++ 中是否有 C# 中的关键字 "where"的类似物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61620949/

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