-var- 创建;无法创建变量对象

-var- create; unable to create variable object

提问人:Shai Susana 提问时间:5/18/2022 最后编辑:Shai Susana 更新时间:5/18/2022 访问量:462

问:

我试图制作一个 2 个对象,它都包含一个对象数组,两者都是从同一个构造函数创建的,但是当我调试时,一个得到一个地址,另一个是 NULL。

Player::Player(std::string name) {
    this->name = name;
    p.setSize(7);
}

这是带有数组的对象。

Pile::Pile(int size) {
    stoneArr = new Stone[size];
    this->size = size;
}

Pile::Pile(){

}

这是播放器内部的对象,它由一个数组组成。

编辑:https://i.stack.imgur.com/Hr1ZY.jpg

当我删除游戏实例时,两者都是空的,如果您需要更多信息,请告诉我我不介意上传整个项目......

C++ 对象 null

评论

3赞 Goswin von Brederlow 5/18/2022
使用并包含一个完整的工作示例。std::vector
0赞 Shai Susana 5/18/2022
我不能使用向量,这是一个学校项目,我禁止使用它
1赞 Yksisarvinen 5/18/2022
请提供最小的可重现示例,我们没有足够的信息来查看问题。另外,请解释到底是什么(不应该为空)NULL
0赞 Aconcagua 5/18/2022
您应该习惯于实现构造函数的初始值设定项列表(不要与 : 混淆),或者实际上,为了避免不必要地复制内部数据,因为您无论如何都接受按值的字符串: – 这更喜欢按值直接初始化,而不是默认初始化和赋 – 后者对于复杂类型可能会产生巨大的开销。此外,某些类型(引用、常量成员、非默认可构造类型等)只能以这种方式初始化。std::initializer_listPlayer::Player(std::string name) : name(name) { ... }: name(std::move(name))
0赞 user12002570 5/18/2022
@ShaiSusana 然后 alteast 使用智能指针(如果它们也没有被禁止并且尚未使用)。

答: 暂无答案