gpt4 book ai didi

c++ - 如何在 C++ 中创建结构的实例?

转载 作者:IT老高 更新时间:2023-10-28 22:18:58 25 4
gpt4 key购买 nike

问题是在我将 bk 变量初始化为 NULL 之后出现“访问冲突写入位置 0x00000000” 错误消息。我的猜测是我应该提前保留内存空间以分配 NULL (类似于 Book bk = new Book(); )但我无法弄清楚如何到现在为止用 C++ 做。

书.h

#ifndef Book_H
#define Book_H

struct _book;
typedef _book* Book;

Book CreateBook(unsigned int pageNum);

Book.cpp

#include "Book.h"
#include <iostream>

#ifndef Book_CPP
#define Book_CPP

using namespace std;

struct _book
{
int pageNum;
};

Book CreateBook( unsigned int pageNum){

Book bk = NULL;

bk->pageNum = pageNum;

return bk;
};

最佳答案

您将 bk 分配给 NULL,然后尝试访问它的成员。这与 Java 中的空指针相同,您所做的通常会引发 NullPointerException(感谢评论)。如果要创建指向结构的指针,则需要使用 operator new:

bk = new _book;
// ...
return bk;

然后确保在完成后对指针调用 delete。

不过,我建议不要在这里使用指针。与其他语言不同,C++ 允许您按值 创建对象。它还允许引用和指针,但仅在绝对必须时使用指针。如果你只是想用给定的 pageNum 创建一个 book 对象,你应该创建一个构造函数:

struct _book {
int pageNum;
_book(int n) : pageNum(n) // Create an object of type _book.
{
}
};

然后你可以像调用它

_book myBook(5); // myBook.pageNum == 5

如果您是 C++ 新手,请为自己准备一本关于它的好书。它不仅仅是一种低级语言,也不仅仅是一种 OOP 语言。这是一种多范式的瑞士军刀语言。

关于c++ - 如何在 C++ 中创建结构的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035461/

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