Я работаю с некоторым 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;
};
Интересно, что синтаксис заставляет выглядеть именно так: 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;
};
Но разве приватный член уже инициализирован конструктором по умолчанию?