代码之家  ›  专栏  ›  技术社区  ›  dkackman Srinivas Kokkula

C++与CLI等价于C的默认值(t)是什么?

  •  15
  • dkackman Srinivas Kokkula  · 技术社区  · 15 年前

    我正在使用一些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;
    };
    
    2 回复  |  直到 15 年前
        1
  •  11
  •   dkackman Srinivas Kokkula    15 年前

    有趣的是,语法如下: T() . 它确实需要添加一个复制构造函数。

    generic<typename T> 
        public ref class Class 
    {
    public:
        Class() : member(T())  
        {
        } 
    
        Class(Class^ c)
        {
            member = c->member;
        }
    
    private:
        T member;
    };
    

    编辑 多哈 这也是工作的(在C的土地上这么长时间,我忘记了NULL和0是在C++中相同的东西,因此不需要不同的值和引用类型的默认值):

    generic<typename T> 
        public ref class Class 
    {
    public:
        Class() : member(0)  
        {
        } 
    
        Class(Class^ c)
        {
            member = c->member;
        }
    
    private:
        T member;
    };
    
        2
  •  1
  •   Assaf Lavie    15 年前

    但是私有成员不是已经用默认构造函数初始化了吗?