gpt4 book ai didi

C++ 模板类

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:24 24 4
gpt4 key购买 nike

我是一名计算机科学专业的学生,​​我们目前正在学习 C++ 模板。我们被指示写一个Linked List模板类,我们不允许使用STL(注意这是未完成的代码):

template <class T>
class LinkedList
{
private:
//////// NODE CLASS //////////
template <class T>
class Node
{
public:
///// DATA MEMBERS
T *m_val;
Node<T> *m_next;
Node<T> *m_prev;
// CTORS
Node(T *val) : m_val(val) { m_next = NULL; m_prev = NULL; }
Node(T *val, Node<T> *next, Node<T> *prev) : m_val(val), m_next(next), m_prev(prev) { }
// C.CTOR
Node(const Node<T> & n) { m_val = n->m_val; m_next = n->m_next; m_prev = n->m_prev; }
// DTOR
~Node() { delete m_val; if (m_prev) m_prev->m_next = m_next; if (m_next) m_next->m_prev = m_prev; }
};
///////////////////////

Node<T> *first;
public:
LinkedList(T*)
{

}
~LinkedList();
};

template <class T>
LinkedList<T>::LinkedList(T* t)
{
first = Node<T>(t); /// <---- PROBLEM HERE
}

但是,问题是编译器不允许我使用 Node 构造函数..

我做错了什么?

编辑:

正如我所说,这是未完成的代码,所以我认为我得到的错误会令人困惑(因为我无法直接看到问题出在哪里)。

无论如何,这是错误(在 Microsoft Visual C++ 2010 Express 上调试):

1>------ Build started: Project: Ex4, Configuration: Debug Win32 ------
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>c:\users\dan\documents\visual studio 2010\Projects\Ex4\Debug\Ex4.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

最佳答案

线

first = Node<T>(t);

需要

first = new Node<T>(t);

因为 first 是一个 Node*,而不是一个 Node

您还可以使用以下方式初始化它:

template <class T>
LinkedList<T>::LinkedList(T* t) : first(new Node<T>(t))
{
}

这是一种首选方法。

关于C++ 模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24232698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com