有谁知道如何在 QnA maker 中为答案添加 URL 链接?
就目前而言,我只能看到您可以添加直接文本。
我不允许专门为此学校作业使用向量.我发现的大多数答案只是说"你应该使用向量"作为最高投票评论.虽然我很欣赏并理解这一点,但我只是限制使用它们来完成这项任务.
它是一个带有动态内存管理的C++赋值,如下所示:
// property in header declaration
int numAnimals;
int capacity;
Animal** animals;
void addAnimal(Animal *newAnimal);
// class implementation
capacity = 10;
numAnimals = 0;
animals = new Animal*[capacity];
void SampleClass::addAnimal(Animal *newAnimal)
{
for (int i = 0; i < capacity; i++){
if(animals[i]){
// animal object already exists in array, move on
i++;
}else{
animals[i] = newAnimal;
numAnimals++;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
animals是指向指针的指针,在这种情况下是指向尚未创建的对象类型Animal的指针数组的指针.
使用'addAnimal'函数,我要做的是通过循环遍历指针数组将动物对象添加到数组中,如果已存在动物对象,则迭代到下一个索引.如果没有动物,则将该动物插入阵列.
当我尝试访问数组中动物对象的成员函数时,我得到一个异常抛出"读取访问冲突".
我的怀疑是因为: if(animals [i])可能没有做我认为它正在做的事情,通过调试器运行它我从未点击'else'部分,所以数组仍然没有设置任何对象的指针当方法完成时.因此,当我尝试访问成员函数时,它是一个不存在的对象.
那么,如果我的怀疑是正确的,那么以这种方式将新对象插入指针数组的最佳方法是什么?它们需要是指针,否则它会自动创建充满填充对象的数组,这不是我想要的.
我没有发布所有代码,因为我想保持我的问题简短,道歉我是一个新的C++和stackoverflow一般.是的,我知道删除[]后清除内存.
任何帮助表示赞赏,谢谢!