运算符 = 不匹配,构造函数创建一个指针
no match for operator =, constructor creates a pointer
对于作业,我必须创建一个 LinkedList 类,以下是标头信息:
struct element{
Event *data;
element *next;
};
class LinkedList {
public:
element *first, *last;
LinkedList();
构造函数是:
LinkedList::LinkedList() {
first = NULL;
last = NULL;
}
我正在尝试像这样用它排队:
class EventQueue {
public:
LinkedList events;
最后错误发生在这里,我尝试为EventQueue 通过执行以下操作:
EventQueue::EventQueue(){
events = new LinkedList();
}
它抛出一个错误,与运算符 = 不匹配,操作数类型是 LinkedList 和 LinkedList*。
为什么 LinkedList 的构造函数会创建一个指针?我找不到导致这种情况的原因或如何解决它。
编辑:感谢大家的回复,我觉得自己像个白痴,我遇到了一堆未定义的引用错误,并认为我必须更改构造函数,所以我尝试了全新的对象。实际上,错误出在我的制作文件中,我没有正确链接 LinkedList.o 文件。谢谢大家回答我的问题!
>new
用于对象的动态分配,因此它始终返回指针。
由于你已经将events
声明为LinkedList
,而不是LinkedList*
,所以你不需要做任何事情来初始化它。创建EventQueue
时,将自动调用 LinkedList
的构造函数。
表达式
new LinkedList()
返回指向新LinkedList
对象的指针,而数据成员LinkedList events;
是对象(而不是指向对象的指针)。请注意,使用LinkedList events;
对象events
在创建EventQueue
对象时自动获得(默认)初始化;此时,将隐式调用 LinkedList
的默认构造函数。因此,只需删除该行events = new LinkedList();
相关文章:
- 修改函数中的指针(将另一个指针作为参数传递)
- 将指针分配给另一个指针时会发生什么情况?
- C++将一个指针分配给另一个指针时执行的类型检查
- 更改一个指针后更改乘法对象
- 从另一个指针指向函数的指针
- 有没有办法在同名类 (c++) 中为对象分配一个指针变量
- 为什么通过定义另一个指针单元格,整个代码停止工作?
- C:试图将指针值复制到另一个指针中,得到可修改的左值错误
- C++ typedef 函数指针,并在一个语句中声明一个指针
- 一个对象的两个指针.删除了一个指针,对象仍然存在
- 如何获得GUID编码器,如果我在IMFTransform上有一个指针?
- 我不明白我的错误需要返回一个指针数组
- 使用 SFINAE 测试是否可以将一个指针类型static_cast到另一个指针类型
- 将指针分配给另一个指针时会发生什么情况?
- 如何保存指针地址,以便另一个指针可以继续处理它
- 为什么 std::span 是一个指针 + 大小而不是两个迭代器
- 类的成员应该是一个指针
- 隐式指针变量,在自动定义中具有另一个指针变量
- 利用双重链接列表中的下一个指针
- 你能把一个指针投射到数组中吗?