gpt4 book ai didi

c++ - 无法在赋值中将 'clist::node*' 转换为 'clist::node*'

转载 作者:行者123 更新时间:2023-11-28 08:02:41 24 4
gpt4 key购买 nike

我在这里制作一个 circular linked list ( template <class t> class clist; )具有成员函数,concat ()用于将一个列表连接到另一个列表的末尾。问题出在这个函数上。现在,当我连接两个 clist 时使用相同的模板参数(假设都是 clist<int> )然后函数工作正常,但是一旦我尝试连接两个 clists ( clist <int> c1clist <char> c2 )然后我需要在函数中做一些转换 concat ,并且由于我对模板知之甚少,所以我实际上不知道该怎么做。

所以问题恰恰出在下面程序的最后第二行。我有clist <int> c1其成员函数concat正在调用,clist <char> c2在 c1 的末尾连接。

template <class t>
class clist
{
struct node
{
t data;
node* next;
node (const t& x=0, node* nxt=0): data(x), next(nxt) { }
};

typedef node* NPTR;

public:

NPTR ptr;

template <class r>
void concat ( clist <r> & );

// other functions like push, pop etc. to form the clist

clist () : ptr(0) { }
};

template <class t>
template <class r>
void clist<t> :: concat ( clist <r>& c2 )
{
// ptr is pointer to a certain node in the list through which the list is
// accessedand is zero initially.

if ( c2.ptr == 0 ) return;
if ( ptr == 0 ) ptr = (NPTR) c2.ptr;
else
{
NPTR p = ptr->next;
ptr->next = (NPTR) c2.ptr->next;
c2.ptr->next = ( ??? ) p ;
ptr = (NPTR)c2.ptr;
}

无论我尝试什么,它仍然显示错误 cannot convert 'clist<int>::node*' to 'clist<char>::node*' in assignment .

有人可以告诉这里什么是正确的转换方式吗?

最佳答案

Actor 阵容实际上可以让您免于制作异类名单。您似乎想做的是连接两个列表——一个是 int,一个是 char。现在从概念上讲这似乎是合理的,但 int 节点和 char 节点的结构差异太大。

唯一有意义的方法是将第二个列表复制到整数列表中,然后连接起来。

关于c++ - 无法在赋值中将 'clist<int>::node*' 转换为 'clist<char>::node*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982416/

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