在表单中构建项目:
T* t = new T;
使用T
. 在您的情况下,您没有提供默认构造函数,并明确禁止编译器生成默认构造函数,因为您有一个带值的构造函数。
使用该构造函数采用以下形式:
T* t = new T(U);
要使用代码中的具体示例:
// This will use the default constructor of ListItem<T>, which you _didn't_ provide
ListItem<T>* temp = new ListItem<T>;
// This will use single value constructor ListItem<int>(int), which you did provide.
ListItem<int>* temp = new ListItem<int>(7);
// The generic version would then be -- where T is actually default constructable
ListItem<T>* temp = new ListItem<T>(T());
例如,将值添加到类型的链表int
需要您知道要添加的值:
int value_to_add = 5;
ListItem<int>* temp = new ListItem<int>(value_to_add);
如果您的问题是关于如何分配“头”节点,这通常是指向列表中第一项的指针:
// pointer, does _not_ point to an instantiated value (yet)
ListItem<int>* head = nullptr;
// in the add function:
ListItem<int>* value = new ListItem<int>(value_to_add);
// if the list was empty...
if(nullptr == head)
head = value; // head now points to the first value