我有五个文件:T 类、M 类(抽象类)、MC 类(容器)、AC 类(创建添加到 MC 容器中的特定对象)和我的主文件。我有这些函数来添加一个对象(在本例中为 AC)并检索您在 AC 中找到的数据成员(标题)。
程序编译,看来我可以创建和添加一个 AC 对象。但是,当我尝试使用 GetTitle 函数时,程序崩溃并出现以下错误
“TLab 5.exe 中 0x00b938e6 处未处理的异常:0xC0000005:访问冲突读取位置 0xcccccce4。”</p>
从我查找的内容来看,这意味着我有一个错误/未初始化的指针。我的程序中唯一的指针是这样的:
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.
调用输入的标题的函数在这里:
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++;
}
我没有正确初始化我的指针吗?我的 Add 函数实际上是在欺骗我,并且没有添加任何内容吗?我环顾四周,但我看到的大多数答案都涉及使用向量,为了这个项目,我认为我不允许使用向量,因为教授没有仔细研究它们。