Каков C++ / CLI, эквивалентный значению по умолчанию C# (T)?

Я работаю с некоторым 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;
};
15
задан dkackman 26 December 2009 в 04:10
поделиться

2 ответа

Интересно, что синтаксис заставляет выглядеть именно так: T(). Он требует добавления конструктора копирования.

generic<typename T> 
    public ref class Class 
{
public:
    Class() : member(T())  
    {
    } 

    Class(Class^ c)
    {
        member = c->member;
    }

private:
    T member;
};

Edit DOH Это тоже работает (был в земле C# так долго, что забыл, что NULL и 0 - одно и то же в C++, следовательно, нет необходимости в различных значениях значений и типа ссылки по умолчанию):

generic<typename T> 
    public ref class Class 
{
public:
    Class() : member(0)  
    {
    } 

    Class(Class^ c)
    {
        member = c->member;
    }

private:
    T member;
};
11
ответ дан 1 December 2019 в 04:47
поделиться

Но разве приватный член уже инициализирован конструктором по умолчанию?

1
ответ дан 1 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: