错误:无法<int>在分配中将"单元格*"转换为"列表<int>*"
erreur: cannot convert ‘Cell<int>*’ to ‘List<int>*’ in assignment
我的函数中有一个问题,在我的链表中添加了一个元素。
这是我的函数代码:
template <class T> class Cell
{
public:
Cell<T>* suivant;
T data;
//Constructeur & Destructeur
Cell(T Val);
};
template <class T> class List
{
private:
List<T>* tete;
List<T>* queue;
int longeur;
public:
//Constructeur & Destructeur
List<T>(void);
~List<T>(void);
int ajout_en_tete (T Val);
int ajout_en_fin (List<T>& a, T Val);
void concat (List<T>& a , const List<T>& b);
void copie (const List<T>& a, List<T>& b);
int supprimer (List<T>& a, int pos);
void supprimer_liste(void);
int Taille (const List<T>& a);
int acces (const List<T>& a , int pos);
void afficher (List<T>& a);
void test_vide(List<T>& a);
};
template <class T> List<T>::List(void)
{
tete = NULL;
queue = NULL;
longeur=0;
}
template <class T> List<T>::~List(void)
{
supprimer_liste();
}
template <class T> Cell<T>::Cell(T Val)
{
suivant = NULL;
data = Val;
}
template <class T> int List<T>::ajout_en_tete(T Val)
{
Cell<T>* C = new Cell<T>(Val);
if(longeur==0)
{
tete=C;
queue=C;
longeur+=1;
}
else
{
C->suivant=tete;
tete=C;
longeur+=1;
}
return 0;
}
我有这个错误,我不明白意思:
src/main.cpp:16:19: instantiated from here
src/liste.h:73:24: erreur: cannot convert ‘Cell<int>*’ to ‘int*’ in initialization
src/liste.h:76:3: erreur: cannot convert ‘int*’ to ‘List<int>*’ in assignment
src/liste.h:77:3: erreur: cannot convert ‘int*’ to ‘List<int>*’ in assignment
src/liste.h:84:3: erreur: request for member ‘suivant’ in ‘* C’, which is of non-class type ‘int’
src/liste.h:85:3: erreur: cannot convert ‘int*’ to ‘List<int>*’ in assignment
我假设第一个错误指的是这一行
tete=C;
tete
的类型为 List<T>*
,C
的类型为 Cell<T>*
。这些类型不同,因此会出现错误。
查看您的代码,很明显这
private:
List<T>* tete;
List<T>* queue;
真的应该是这个
private:
Cell<T>* tete;
Cell<T>* queue;
因为列表包含指向单元格的指针,而不是指向更多列表的指针。
List
应该包含Cell
s,而不是List
s。您可能需要修复成员的类型:
template <class T> class List
{
private:
Cell<T>* tete; // <- here
Cell<T>* queue; // <- here
虽然我不确定queue
,因为我不知道它应该做什么。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 调用'begin(int [n])'没有匹配函数
- 没有显式声明的int[]中的foreach
- 在c++中访问int到类对象的映射时出错
- 为什么我无法更改"set<set>"循环中的值<int>
- EASTL矢量<向量<int>>连续的
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- 'structstd::对<int,int>'没有名为'push_back'