我可以声明新变量吗,比如一个不同的类, 在一个c'tor? 假设我有一个名为 List 的类和一个 Node(嵌套在 List 类中),那么我想做的是:
List::List(int num)
{
Node Nod(num); //creating a new Node which is holding num
List_Head=&Nod; //List_Head is a Node pointer variable of List class
}
执行此操作后,我会收到以下运行时错误:
Debug Assertion Failed!
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
有什么帮助吗?
最佳答案
您创建的 Nod
的范围和生命周期仅限于构造函数 List::List()
因为它是一个本地/自动对象。
一旦构造函数返回 Nod
不存在并且任何指向它的东西 (List_Head
) 都是悬空指针,对它的引用将导致未定义的行为 很可能是崩溃。
如果您想在构造函数主体之外引用它,您应该通过调用 new
在动态内存(堆)上创建 Node
。
List_Head = new Node(num);
理想情况下,您应该为 List_Head
使用某种智能指针 而不是原始指针,这样您就不必进行手动内存管理。如果你不能,你必须打电话:
delete List_Head;
在您完成使用后以避免内存泄漏。
关于c++ - C++类中的C'tor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996713/