0

我需要一些关于指针的类内声明的帮助。尽管我使用 c++,但我正在寻找一种使用 c 样式数组的方法(所以不幸的是没有向量)。我无法在执行过程中没有错误,例如“分段错误: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];

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

任何帮助将不胜感激

4

1 回答 1

2

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

在您的情况下,私人部分可能会更改为:

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);
于 2017-04-26T10:59:46.950 回答