我正在使用一些C ++ / CLI代码(新语法)并尝试声明泛型类型,并希望将成员变量设置为默认值。
在C#中:
class Class<T>
{
T member = default(T);
}
CLI中的等价物是什么?
generic<typename T> public ref class Class
{
public:
Class() : member(default(T)) // <-- no worky
{
}
private:
T member;
};
答案 0 :(得分:11)
有趣的是语法使它看起来像这样:T()
。它确实需要添加一个拷贝构造函数。
generic<typename T>
public ref class Class
{
public:
Class() : member(T())
{
}
Class(Class^ c)
{
member = c->member;
}
private:
T member;
};
修改强> DOH 这也有效(在C#中已经存在了这么长时间我忘了在C ++中NULL和0是一样的,因此不需要不同的值和引用类型默认值):
generic<typename T>
public ref class Class
{
public:
Class() : member(0)
{
}
Class(Class^ c)
{
member = c->member;
}
private:
T member;
};
答案 1 :(得分:1)
但是私有成员是不是已经使用默认构造函数初始化了?