Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 定义具有相同名称和不同类型参数数的泛型类(C+;+;/CLI)_.net_Generics_C++ Cli_Managed - Fatal编程技术网

.net 定义具有相同名称和不同类型参数数的泛型类(C+;+;/CLI)

.net 定义具有相同名称和不同类型参数数的泛型类(C+;+;/CLI),.net,generics,c++-cli,managed,.net,Generics,C++ Cli,Managed,用C#可以这样写: public static class Test { } public class Test<T> { } 公共静态类测试 { } 公开课考试 { } 如何在C++/CLI中执行相同的操作 我试图定义: public ref class Test abstract sealed { }; generic<typename T> public ref class Test { }; public ref类测试摘要密封 { }; 通用的 公共参考类

用C#可以这样写:

public static class Test
{
}
public class Test<T>
{
}
公共静态类测试
{
}
公开课考试
{
}
如何在C++/CLI中执行相同的操作

我试图定义:

public ref class Test abstract sealed
{
};

generic<typename T>
public ref class Test
{
};
public ref类测试摘要密封
{
};
通用的
公共参考类测试
{
};
但我得到了一个C2011错误:“类”类型重新定义

我想创建一个静态类,它定义了创建泛型类实例的方便方法,就像System.Tuple一样


<> >非常感谢!

< P> C++中没有静态类概念,甚至在C++/CLI.This中也没有讨论过。 然而,若您想像在静态类中一样模拟事物,一个解决方法是放置一些静态函数,可以调用这些函数来初始化静态成员,而无需创建实例

class Test
{
 public:
  static int InitializeGenerics(...);
}

这可以很容易地称为
Test::InitializeGenerics()

为了清楚起见,您需要执行以下操作:

generic<typename T>
public ref class Test {};

generic<typename T, typename U>
public ref class Test {};
通用
公共ref类测试{};
通用的
公共ref类测试{};
<> P>这是一个缺陷,因为CLR允许这样做。但是它是从C++继承的。C++ C++语言使用了C++编译器的很多管道,在这个过程中继承了它的命名规则。你可以把它发布到连接。MySoFt.com,但是它会像“设计”一样快速关闭。
唯一可行的方法是将这些泛型类型移动到C++/CLI项目中引用的C#类库中。或者通过解决诸如重命名其余类之类的折衷方案,像Test2这样的方法是可取的。这确实反映了这些类完全不相关的现实。

嗨,谢谢你的回答。Defining静态类不是我的问题。我想定义两个同名的ref类,这样一个类有一个泛型类型参数,另一个没有。这是不可能的,原因是在编译期间它会产生冲突,但是Hans解决方案更详细地说明了这一点:(