我需要在 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/