gpt4 book ai didi

c++ - 帮助在 C++ 中的类和对象中设置/构造静态数组大小

转载 作者:行者123 更新时间:2023-11-30 01:29:04 30 4
gpt4 key购买 nike

有一个家庭作业,我认为很简单,可以不使用类/对象来完成,但我想我只是对类/对象的理解不够好,无法按照老师要求我做的方式完成它。

所有这些都将通过一个长度始终为 20 的整数数组来完成。

分配调用 3 个单独的文件:

1 个头文件,book.h,包含类元素/成员函数/原型(prototype))1 个.cpp 文件,包含所有成员函数。为此,我将简单地包括一个示例(,1 个 .cpp 文件,它只包含 int main 并充当用户所看到的界面并调用成员函数等。

//book.h
class Shelf{
public:
Shelf();
void insert(int);
int bookshelf[];
};

现在 book.cpp 包含成员函数(我真的不知道我是否需要这样的构造函数,我是否将数组命名为与 book.h 中的数组相同的名称?)

//book.cpp
#include <iostream>
#include "book.h"
const int shelfSize=20;

Shelf::Shelf(){
bookshelf[shelfSize];
for(int i=0; i <shelfSize; i++)
bookshelf[i]=0;
}
//inserts a book to the end of the list
void Shelf::insert(int booknum){
for(int i=0; i < shelfSize; i++)
bookshelf[i] = booknum;
}

现在 book_main.cpp,它只是应该提供一个菜单并提示用户:

//book_main.cpp
#include<iostream>

using namespace std;

#include "book.h"

int main(){

Shelf book; //creates a Shelf object named "book"
int isbn=0;
cout<<"Enter ISBN: "<<endl;
cin>>isbn;
book.insert(isbn);
return 0;
}

现在我意识到这个逻辑没有多大意义,除此之外我的程序中还有很多。我正在淡化它,只是为了展示我遇到的问题。

1) 我应该如何在我的对象和成员函数等中设置数组?我想我的函数设计很糟糕,以及包含所有成员函数等的文件中的数组名称不正确。任何建议将不胜感激。该程序可以编译,但每次我调用 book.insert() 时都会崩溃

最佳答案

试试这个:

//book.h
class Shelf{
public:
static const int shelfSize = 20;
Shelf();
void insert(int);
int bookshelf[shelfSize];
};

(您需要从构造函数中删除 bookshelf[shelfSize]; 行。)

可以通过利用初始化列表来简化您的构造函数:

Shelf::Shelf()
: bookshelf() // This initializes all elements to zero
{}

您的 insert() 逻辑没有多大意义;您需要记录到目前为止已插入的项目数量,以便您知道将下一个项目放在哪里。

另外,考虑使用 std::vector 而不是原始的 C 风格数组。他们避免了几个问题,例如空间不足!

关于c++ - 帮助在 C++ 中的类和对象中设置/构造静态数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433416/

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