需要类 2D 数组 (C++) 的帮助
need help for 2d array in class (c++)
在这种情况下,我想删除书,但我尝试声明此代码,它不起作用。
class Library {
private:
Book **books;
int counter;
public:
Library() {
books = NULL;
counter = 0;
}
void Add(INPUT &tmp) {
books = new Book*[counter];
++counter;
}
void Delete() {
--counter;
delete[] books[counter];
books[counter] = NULL;
}
int getCounter() {
return this->counter;
}
~Library() {
delete[] books;
}
};
在开始删除工作之前,您需要正确添加。
除了 Jeffrey 所说的之外,您的Add
函数可能由于"逐个输出"错误而无法正常工作。在第一个电话中,您将有books = new Book*[0];
.分配一个零大小的数组是合法的(见这里(,但您将无法在其中存储任何内容。
如果你可以使用std::vector
它将使您的代码更简单,更不容易出错。
class Library {
private:
std::vector<Book> books;
// no need for counter, std::vector has size()
public:
// no need for a constructor, the default constructor
// will correctly construct 'books'
void Add(INPUT &tmp) {
// not sure how you convert 'INPUT' to 'Book'
books.push_back(tmp);
// this handles all of the memory management for you
}
void Delete() {
// you need to ensure that books is not empty
books.pop_back();
}
int getCounter() {
return books.size();
}
// no need for a destructor, the default one will
// do everything
};
如果你需要二维,那么代码是类似的,但将使用向量的向量。
Book **books;
是指向书籍的指针。这是拥有书籍列表(作为指针(或书籍列表的旧式方式。
Library() {
books = NULL;
counter = 0;
}
这将创建一个空库。没有书。
void Add(INPUT &tmp) {
books = new Book*[counter];
++counter;
}
首先要注意的是,您没有使用tmp
书。因此,如果不使用它,您可能无法成功将其存储在任何地方。
第二件事是books = new Book*[counter];
分配了一个图书馆的书籍。存放一些书籍的空间。您可能应该在构造函数中执行此操作。如果你在那里这样做,每次你尝试添加一本书时,你都会失去所有其他的,你也会泄漏记忆。
这里有两种可能性。您有一位老教授C++,您需要了解指针和指向指针的指针,以及新的删除。或者你可以了解std::vectors和智能指针。这将是一个更好的主意,但我不能告诉你它会在你的课堂上得到多大的接受。
另外,请说明输入的定义是什么。
相关文章:
- 需要帮助设置在C++中使用的Potrace
- 在指针的帮助下,文本文件中单词的频率
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 需要帮助将结构数组传递给函数
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 有人可以帮助我处理正则表达式吗?
- C++调用具有 *this 属性的单个帮助程序函数
- C++:需要帮助了解运算符重载错误
- 需要以下代码的帮助,下面的代码有什么问题
- CS1 项目帮助C++
- 用于检查值是否为其任何参数的帮助程序函数
- 需要有关此 if 语句的帮助
- 类型限定宏帮助程序
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- NS3 插槽混淆(需要帮助理解)
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 需要帮助查找内存泄漏
- 有人可以帮助我理解这些参数/参数吗?