帮助在C++中设置/构造类和对象中的静态数组大小
Help Setting/Constructing Static Array Size in Classes and Objects in C++
有一个家庭作业,我认为很简单,可以不使用类/对象来完成,但我想我只是对类/对象的理解不够好,无法按照老师要求的方式完成。
所有这些都将使用一个长度始终为20的整数数组来完成。
分配需要3个单独的文件:
1个头文件,book.h,包含类元素/成员函数/原型)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样式数组。它们避免了一些问题,例如空间不足!
bookshelf
没有空间。你的定义不是由大小决定的。
//book.h
#define shelfSize 20
class Shelf{
public:
Shelf();
void insert(int);
int bookshelf[shelfSize];
};
和书的使用。h
//book.cpp
#include <iostream>
#include "book.h"
Shelf::Shelf(){
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;
}
相关文章:
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 类的全局对象和静态成员
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 将 RTOS 队列对象封装在仅具有静态分配的 IQueue 自定义接口中
- 我可以读取静态对象中的文件.txt吗?C++
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 链接时,不同静态库中的同一对象文件
- 通过 Gazebo 世界插件将静态对象附加到机器人链接
- 将对象创建为全局/静态对象会崩溃,而本地对象不会崩溃
- 静态分配对象的值初始化
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 将基类分配给派生对象,反之亦然,以C++以及静态和动态对象之间的差异
- 如何正确实例化静态字段 tat 是另一个类对象
- 非静态成员引用必须相对于特定对象
- 如何将对象添加到类中的静态向量
- SFML-对象静态定义
- 派生类没有额外的数据成员;将基对象静态向下转换为派生对象是否安全
- 使用全局对象静态成员时出现seg错误
- 卸载应用程序域不清除C++ COM 对象静态成员
- 为什么我不能将模板化对象静态化为继承树