Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++;(无法将新对象创建为局部变量)? 我正在学习C++,我想实现一个简单的链表。这是我的密码 #include <vector> #include <iostream> struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; int main() { ListNode start = ListNode(-1); ListNode *startptr = &start; for(int i=0;i<3;i++) { ListNode foo=ListNode(i); startptr->next = &foo; startptr = startptr->next; } }_C++_Pointers_Constructor_Linked List - Fatal编程技术网

如何在C++;(无法将新对象创建为局部变量)? 我正在学习C++,我想实现一个简单的链表。这是我的密码 #include <vector> #include <iostream> struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; int main() { ListNode start = ListNode(-1); ListNode *startptr = &start; for(int i=0;i<3;i++) { ListNode foo=ListNode(i); startptr->next = &foo; startptr = startptr->next; } }

如何在C++;(无法将新对象创建为局部变量)? 我正在学习C++,我想实现一个简单的链表。这是我的密码 #include <vector> #include <iostream> struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; int main() { ListNode start = ListNode(-1); ListNode *startptr = &start; for(int i=0;i<3;i++) { ListNode foo=ListNode(i); startptr->next = &foo; startptr = startptr->next; } },c++,pointers,constructor,linked-list,C++,Pointers,Constructor,Linked List,foo的地址始终与startptr无法指向新节点的地址相同。 我切换到调试模式,并获得以下图片: 似乎只有一个foo,每次我“创建”一个名为foo的新ListNode,最后一个ListNode将被覆盖 我曾经使用Python,但从未遇到过这样的问题。这让我很困惑。与ListNode foo=ListNode(i);startptr->next=&foo,您指的是具有自动存储持续时间和块范围的对象。因此,对象foo将在每个循环周期结束时被销毁,稍后引用它会产生未定义的行为 链表的节点通常使用动态

foo
的地址始终与
startptr
无法指向新节点的地址相同。 我切换到调试模式,并获得以下图片:

似乎只有一个
foo
,每次我“创建”一个名为
foo
的新
ListNode
,最后一个
ListNode
将被覆盖


我曾经使用Python,但从未遇到过这样的问题。这让我很困惑。

ListNode foo=ListNode(i);startptr->next=&foo,您指的是具有自动存储持续时间和块范围的对象。因此,对象
foo
将在每个循环周期结束时被销毁,稍后引用它会产生未定义的行为

链表的节点通常使用动态存储持续时间创建,即使用
new
。请参阅以下说明此情况的自适应代码:

int main()
{
    ListNode *start = new ListNode(-1);
    ListNode *ptr = start;
    for(int i=0;i<3;i++)
    {
        ListNode *foo = new ListNode(i);
        ptr->next = foo;
        ptr = ptr->next;
    }
}
intmain()
{
ListNode*start=新ListNode(-1);
ListNode*ptr=开始;
对于(int i=0;INXT=foo;
ptr=ptr->next;
}
}

使用
ListNode foo=ListNode(i);startptr->next=&foo;
,您指的是一个具有自动存储持续时间和块范围的对象。因此,对象
foo
将在每个循环周期结束时销毁,稍后引用它会产生未定义的行为

链表的节点通常是使用动态存储持续时间创建的,即使用
new
。请参阅以下说明这一点的改编代码:

int main()
{
    ListNode *start = new ListNode(-1);
    ListNode *ptr = start;
    for(int i=0;i<3;i++)
    {
        ListNode *foo = new ListNode(i);
        ptr->next = foo;
        ptr = ptr->next;
    }
}
intmain()
{
ListNode*start=新ListNode(-1);
ListNode*ptr=开始;
对于(int i=0;INXT=foo;
ptr=ptr->next;
}
}

我建议你从Python编程学习。这是一个福音,但不要把Python对象模型应用到C++对象上。Story Teller在这里,需要一本好的书/教程来学习习语C++。使用动态内存分配,从Python中推荐学习。编程经验在Python中是一个福音,但不要。Story Teller在这里,你需要一本好的书/教程来学习习惯性的C++ C++。使用动态内存分配,你能修改例子或者添加一个关于在指针上更喜欢智能指针的注释吗?你能修改这个例子还是添加一个关于SMAR的注释?t指针超过原始指针?