C++ 类中指针访问的私有数组的声明和内存分配
我需要一些关于指针类内声明的帮助。我正在寻找一种使用C样式数组(不幸的是没有向量)的方法,虽然我使用C++。我不能设法在执行中没有错误,例如“分段错误:11”或“总线错误:10”。目的是提供一种方法来包含对类中人员的10个引用 这些指针在.h文件中的声明方式如下:C++ 类中指针访问的私有数组的声明和内存分配,c++,arrays,pointers,runtime-error,bus-error,C++,Arrays,Pointers,Runtime Error,Bus Error,我需要一些关于指针类内声明的帮助。我正在寻找一种使用C样式数组(不幸的是没有向量)的方法,虽然我使用C++。我不能设法在执行中没有错误,例如“分段错误:11”或“总线错误:10”。目的是提供一种方法来包含对类中人员的10个引用 这些指针在.h文件中的声明方式如下: private: string * name; string * surname; int * index1; int * index2; 在.cc文件的ctor中,我使用了不同的方式分配内存,例如: string * name =
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的扩展
非常感谢您提供的任何帮助我认为您应该使用std::vector,因为初学者几乎没有理由使用new/delete 在您的情况下,专用部分可以更改为:
private:
std::vector<string> name;
std::vector<string> surname;
std::vector<int> index1;
std::vector<int> index2;
我认为应该使用std::vector,因为初学者几乎没有理由使用new/delete 在您的情况下,专用部分可以更改为:
private:
std::vector<string> name;
std::vector<string> surname;
std::vector<int> index1;
std::vector<int> index2;
这些是局部变量,正在隐藏对象实例成员。类型(
string*
等…)不应该出现在实际的c-tor中(而且可以说,您应该首先使用std::vector
s)。在您的c-tor中,贴花应该像name=new string[10]
一样。谢谢您的快速回复,但我也尝试过这种方法,它返回一个运行时错误。请提供一个,目前为止,很少有帮助。这些是局部变量,并且隐藏了对象实例成员。类型(string*
等…)不应该出现在实际的c-tor中(而且可以说,您应该首先使用std::vector
s)。在您的c-tor中,贴花应该像name=new string[10]
一样。谢谢您的快速回复,但我也尝试过这样做,它返回一个运行时错误。请提供一个,目前为止,几乎没有什么帮助。请使用一个成员初始值设定项列表,让一个空构造函数bodyOP实际上显式地说“无向量”@Passenger OP似乎是个新手,在我看来,给他们提供一个比new/Delete更好的选择似乎更好。即使是这样,基于向量的答案应该是直接答案的补充,但更好的是,使用成员初始值设定项列表,让空构造函数bodyOP实际上明确表示“无向量”@Passerway OP似乎是一个新手,在我看来,给他们一个比new/Delete更好的选择似乎更好,即使是这样,基于向量的回答应该是对直接回答的补充