在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。)