What is the C++/CLI equivalent to C#'s default(T)?

前端 未结 2 1219
予麋鹿
予麋鹿 2020-12-18 21:34

I\'m working with some C++/CLI code (new syntax) and am trying to declare a generic type and want to set a member variable to it\'s default.

In C#:

c         


        
相关标签:
2条回答
  • 2020-12-18 22:04

    But isn't the private member already initialized with the default constructor?

    0 讨论(0)
  • 2020-12-18 22:11

    Interestingly enough the syntax makes it looks like this: T(). It does require the addition of a copy constructor.

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

    Edit DOH This works too (been in C# land for so long I forgot that NULL and 0 are the same thing in C++, hence no need for different value and reference type default values):

    generic<typename T> 
        public ref class Class 
    {
    public:
        Class() : member(0)  
        {
        } 
    
        Class(Class^ c)
        {
            member = c->member;
        }
    
    private:
        T member;
    };
    
    0 讨论(0)
提交回复
热议问题