繁体   English   中英

尝试将指针复制到列表,出现“无法在初始化时将…转换为…”错误

[英]Trying to copy the pointer to a list, getting “cannot convert … to … in initialization” error

我希望我的Bullet类可以访问Ship列表,所以我有一个静态变量,它是指向列表对象的指针。

class Bullet {
    ...
    static list<Ship*>* enemyList;
    ...
}

宣布名单,

std::list<Ship*> enemyList;

最后,我提供了我的静态变量的定义:

std::list<Ship*>* Bullet::enemyList = &enemyList;

但是,编译器给出以下错误:

error: cannot convert `std::list<Ship*, std::allocator<Ship*> >**' to `std::list<Ship*, std::allocator<Ship*> >*' in initialization|

通过将我的定义更改为以下内容,当需要列表的函数被调用时,程序会编译但出现段错误:

std::list<Ship*>* Bullet::enemyList = enemyList;  //no &

这使我相信我对std :: list的理解和使用存在错误,但是我不确定这是什么。 谢谢!

编辑:已解决

正如下面的Matt McNabb所指出的那样,敌人列表位于

std::list<Ship*>* Bullet::enemyList = &enemyList;

引用的是左侧的敌人列表,而不是我想在课程之外调用的敌人列表。 使用不同的名称解决了这个问题。

首先,听起来像是您想要的:

static list<Ship> enemyList;

目前尚不清楚为什么要包含指针。 如果您使用此表格,那么所有其他问题都会被提出,但是无论如何要回答:

这行没有意义:

std::list<Ship*>* Bullet::enemyList = &enemyList;

您正在尝试初始化列表以指向自身,这是不可能的(因为列表包含Ship* ,而不是list<Ship*> )。 声明为:

list<Ship*> *Bullet::enemyList;

并且您还必须使该指针指向某个位置(默认情况下将为空指针)。

您的第二个版本可以编译,但是就像编写:

int x = x;

希望你能理解为什么这是一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM