gpt4 book ai didi

c++ - 双指针在使用 new 时不调用对象构造函数

转载 作者:行者123 更新时间:2023-11-27 23:44:36 24 4
gpt4 key购买 nike

我的问题似乎只能用一个指针来回答。我正在尝试动态分配二维链表。我在尝试使用类 llist 构造函数将头指针和尾指针设置为 NULL 时遇到的问题:

//I've included only the parts that I see are neccesary
struct node {
int value ;
int weight ;
node* next ;
} ;
class llist{
private :
node* tail, *head ;
public :
llist(){tail = NULL ; head = NULL ;} /* this unneccesary retype is to make sure
that it wasn't a typo*/
}
class list_graph
{
private :
int size, s;
llist ** v ;
public :
list_graph(int s){
this -> s = s ;
size = 0 ;
v = new llist* [s] ;
}
}

我已经使用调试器并运行了每个步骤,似乎在我创建 list_graph 类型的对象后,我的 llist 构造函数没有被调用,所以每个依赖于此的其他功能失败并给我段错误。我有什么地方做错了吗,或者除了使用 STL 列表之外还有什么解决方法,非常感谢

最佳答案

这个:

  v = new llist* [s] ; 

创建指向 llist 类型的指针数组,但它不创建任何 llist 对象。如果你想要一系列这样的东西,那么你想要:

  llist * v ;  

和:

  v = new llist[s] ; 

或者更好的是,如果这不是家庭作业,请使用 std::vector。并且不要将 llist ** v 之类的东西视为“双指针”;将它们视为它们的本质 - 指向指针的指针。

关于c++ - 双指针在使用 new 时不调用对象构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51638255/

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