具有递归类型约束的C ++ / CLI通用接口

时间:2019-06-20 17:36:05

标签: generics visual-c++ c++-cli clr generic-constraints

在C ++ / CLI中,我想创建一个具有类型约束的泛型接口,该接口引用要定义的泛型类型。作为参考,这是与我想做的等效的C#:

public interface IFoo<T> where T : IFoo<T>
{ /* Foo methods */ }

上面的代码编译良好。但是,在C ++ / CLI中,以下代码无法编译(因为“'IFoo'不是类型”):

generic <typename T> where T : IFoo<T>
public interface class IFoo
{ /* Foo methods */ };

我试图添加一个转发声明,但出现错误“通用参数'T'的约束与声明上的约束不同”:

generic <typename T>
interface class IFoo;

generic <typename T> where T : IFoo<T>
public interface class IFoo
{ /* Foo methods */ };

尝试纠正这一点使我回到第一个错误:

generic <typename T> where T : IFoo<T>
interface class IFoo;

generic <typename T> where T : IFoo<T>
public interface class IFoo
{ /* Foo methods */ };

我知道这主要是C ++编译器的局限性,但是我希望在某处可能有解决方法。 (如果需要的话,我正在使用Visual Studio 2015。)

0 个答案:

没有答案