c++ - 每次我从另一个 C++ 类调用类函数时,我的程序都会崩溃

标签 c++

<分区>

运行程序时程序崩溃。错误出在 Administrator 类的 createNewBook() 函数中 (bk->create_Newbook();)。我尝试了很多方法从 Administrator 类调用 Book 类的 create_Newbook() 函数,但程序总是崩溃。

class Book{
private:
    char bookName[50],bookAuthor[50];
public:
    void create_Newbook()
    {
    cout<<"\nNEW BOOK ENTRY...\n";
    cout<<"\n\nEnter The Name of The Book:";
    cin>>bookName;
    cout<<"\n\nEnter The Author's Name:";
    cin>>bookAuthor;
    cout<<"\n\n\nBook Created..";
    }

};

class Administrator{
private:
    Book *bk;
public:
    void admin_menu();
    void displayStudent(){cout << "Access Student file....." ;}
    void displayStaff() {cout << "Access Staff file....." ;}
    void displayOutsider() {cout << "Access Outsider file....." ;}
    void deleteStudent() {cout << "Access to delete student data.....";}
    void deleteStaff() {cout << "Access to delete staff data.....";}
    void deleteOutsider() {cout << "Access to delete outsider data.....";}
    void createNewBook();
    void displayAllbook() {cout << "Access the file display ALL books.....";}

};

void Administrator::createNewBook() {
char choice;
newBook.open("book.data",ios::out|ios::app);
do
{
    bk->create_Newbook();
    newBook.write((char*)&bk,sizeof(Book));
    cout<<"\n\nDo you want to add more record..(y/n?)";
    cin>>choice;
}while(choice=='y'||choice=='Y');
   newBook.close();

最佳答案

这段代码有很多问题。

首先:

newBook.open("book.data", ios::out | ios::app);

此行使用了一个名为 newBook 的对象,该对象尚未在任何地方创建或初始化。

第二个:

bk->create_Newbook();

你还没有在任何地方初始化bk。如果它是一个空指针,那么你的程序就会崩溃。您缺少构造函数和析构函数。在您的代码中的某个时刻,您需要创建对象:例如

bk = new Book()

关于c++ - 每次我从另一个 C++ 类调用类函数时,我的程序都会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44092738/

相关文章:

C++ 按位运算

c++ - C++ 和汇编程序之间的 Scanf 函数

c++ - 循环中的免费 strdup 输出

c++ - 为什么不初始化模板类的这个静态成员?

c++ - C++ 字符串类如何将一个变量转换为另一个变量?

c++ - 遍历对象集合的最快方法

c++ - Windows 7奇怪的异常现象

c++ - 我如何编写程序以仅查看两个字母之一的程序的索引 7

c++ - 哪些整数运算是不安全的?

c++ - 使用 ICC 的 Linux 中对 clock_gettime() 的 undefined reference