gpt4 book ai didi

c++ - 处理未初始化的指针数组 C++ 时出错

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:20 25 4
gpt4 key购买 nike

我有五个文件:T 类、M 类(一个抽象类)、MC 类(一个容器)、AC 类(创建一个添加到 MC 容器中的特定对象)和我的主文件。我有这些函数来添加一个对象(在本例中为 AC)并检索您在 AC 中找到的数据成员(标题)。

程序编译后,我似乎可以创建并添加一个 AC 对象。但是,当我尝试使用我的 GetTitle 函数时,程序崩溃并且出现以下错误

“Unhandled exception at 0x00b938e6 in TLab 5.exe: 0xC0000005: Access violation reading location 0xcccccce4.”

从我查找的内容来看,这意味着我有一个坏的/未初始化的指针。我程序中唯一的指针是:

 M *C[MCSize] //Found in MC.h

MC 的构造函数如下所示:

 MC::MC()
{
cout << "Enter Name: ";
getline(cin, CName);

cout << "Enter size of collection: ";
cin >> CurrentMCSize;
if (CurrentMCSize < 0 || CurrentMCSize > MCSize)
{
cout << "Size is invalid. Please re-enter: ";
cin >> CurrentMCSize;

}; //MCSize is defined in the header of MC.

调用输入的Title的函数在这里:

 void MC::ListMTitles()
{
for (int i = 0; i < CurrentMCSize; i++)
{
cout << i << ". " << Collection[i]->GetTitle();
}
};
//GetTitle is defined in M.cpp

DMA发生的地方://MC.cpp

 void MC::AddM()
{
int Selection;
if(CurrentMCSize < MCSize)
{
DisplayMTypeMenu();
Selection = GetMTypeSelection();
switch(Selection)
{
case 1: Collection[CurrentMCSize] = new AC;
break;
// Other case statements

}
if (0 == Collection[CurrentMCSize])
{
cout << "Error: Memory Allocation Failed.";
exit(1);
}
else
{
cout << "New M Type added!" << endl << endl;
}
CurrentMCSize++;
}

我的指针没有正确初始化吗?我的添加功能实际上是在骗我,没有添加任何东西吗?我环顾四周,但我看到的大多数答案都涉及使用 vector ,为了这个项目,我认为我不被允许使用,因为教授没有复习它们。

最佳答案

您要求用户在构造期间输入集合的大小,但您从未填充集合的这些元素。然后,当您调用 AddM 时,它将从 CurrentMCSize 继续。您应该改为在构造函数中将 CurrentMCSize 初始化为零,并且根本不要求它。

关于c++ - 处理未初始化的指针数组 C++ 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958790/

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