gpt4 book ai didi

c++ - 类中指针访问私有(private)数组的声明及内存分配

转载 作者:行者123 更新时间:2023-11-28 01:49:22 24 4
gpt4 key购买 nike

我需要一些关于指针类内声明的帮助。尽管我使用 C++,但我正在寻找一种使用 C 样式数组的方法(不幸的是没有 vector )。我无法在执行中没有错误,例如“段错误:11”或“总线错误:10”。目的是有一种方法可以包含 10 个对类中人员的引用。

这些指针在.h文件中是这样声明的:

private:
string * name;
string * surname;
int * index1;
int * index2;

在 .cc 文件的 ctor 中,我使用了不同的方式来分配内存,例如:

string * name = new string[10];
string * surname = new string[10];
int * index1 = new int[10];
int * index2 = new int[10];

但是我遇到了运行时错误,可能是因为它实际上没有访问私有(private)变量或者它超出了内存(“段错误”)。如果我不写上面的行,执行时输出是“总线错误”。我不会在编译时出错,只会在执行期间出错。我无法更改 .h 文件中的私有(private)变量类型,也不允许我在类中使用 new,因为它将是 C++11 的扩展。

任何帮助将不胜感激

最佳答案

我认为您应该使用 std::vector,因为初学者几乎没有理由使用 new/delete。

在您的情况下,私有(private)部分可以更改为:

private:
std::vector<string> name;
std::vector<string> surname;
std::vector<int> index1;
std::vector<int> index2;

在构造函数中,可以这样:

name.resize(10);
surname.resize(10);
index1.resize(10);
index2.resize(10);

关于c++ - 类中指针访问私有(private)数组的声明及内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43631125/

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