【发布时间】:2019-08-11 19:57:29
【问题描述】:
我想构造一个大小未知的数组类, 我想制作数组对象,其大小将在我创建对象(运行时)时初始化
class array_class{
public:
int size_of_array;
int arr[size_of_array];
array_class(int p_size_of_array){ //constructor
this->size_of_array=p_size_of_array;
}
};
它说是无效使用非静态数据成员的错误,我做错了什么(我应该知道什么)?。
【问题讨论】:
-
这样的动态数组创建在某些 C++ 标准中是非法的,并且赋值根本不保留任何内存。建议:对此类任务使用
std::vector。 -
@ThomasLang 感谢您的回复,哪个分配根本不保留任何内存,关于在运行时创建数组大小我应该知道什么?
-
你应该知道的是,你需要使用
std::vector。这就是它存在的目的:创建一个在运行时确定的大小的数组。打开你的 C++ 书籍到解释如何使用std::vector的章节,然后阅读它。 -
@SamVarshavchik 先生,我知道如何使用向量,我想创建一个我自己的向量我被迭代器困住了。我正在尝试创建自己的矢量容器,其中包含一个大小会自行增加的数组。我见过这些魔法。我想看看魔法的背后。我知道我没有资格提出这样的要求,所以请尝试一下。
-
矢量不是这样工作的。它们为它们的值动态分配一个缓冲区,并且它们还需要正确地实现诸如构造和销毁向量中的单个元素之类的事情,这本身实际上是一个相当高级的主题。向量不包含在运行时确定的大小数组。这不是他们的工作方式。
标签: c++ arrays class oop compiler-errors