Ниже у меня есть собственный конструктор, который принимает массив, размер массива и имя набора в соответствии со спецификациями моих инструкторов. Однако, когда я запускаю эту программу, я получаю дамп ядра сегментации. Здесь используется элемент данных (int * set), а psize - физический размер массива. Как я могу это исправить?Передача динамически распределенного массива через конструктор
//custom constructor
Set::Set(int array[] , int size, char name){
set = new int[size];
psize = (size > 0 ? size: DEFAULTSIZE);
numOfElements = size;
set = array;
if (!set){
cout << "Cannot Allocate Memory, exiting program... " << endl;
exit(1);
}
Set::name = name;
}
ostream &operator<<(ostream &out, const Set &s){
cout << "The Elements of your set are: " << endl;
cout << "{" ;
for (int i = 0; i < s.numOfElements; i++){
out << s.set[i];
if (i < s.numOfElements - 1){
out << ',';
}
}
cout << "}" << endl;
cout << "Number of Elements is " << s.getNumOfElements() << endl;
}
int main(){
int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr2[3] = {2, 4, 11};
Set A(arr1, 10, 'A');
Set B(arr2, 3, 'B');
cout << A;
cout << B;
/*Set C;
cin >> C;
cout << C;
Set D(A);
cout << D;
Set E = A + C;
cout << E;
*/
}
Опубликовать полный пример. прежде чем публиковать его, уменьшите его до минимума и убедитесь, что он все еще компилирует и иллюстрирует проблему. –
Моя программа скомпилирована должным образом, однако, когда я пытаюсь запустить программу, она говорит, что она сбрасывается ядром. Он отображает произвольное количество чисел –
Откат последнего изменения, так как он значительно изменил код после того, как был отправлен ответ. @ChynnaHernandez: Пожалуйста, не делайте этого. Вы можете изменить вопрос, но, пожалуйста, не изменяйте его после ответов. –