Я пытался передать аргумент, не используя дополнительную строку, но я просто подумал, что, возможно, в этом проблема, что я использую много символов в строке. Поэтому я использовал дополнительную строку, инициализирующую ее с помощью оператора присваивания (string detail1, string detail 2) в основной функции, но это не помогло, и ошибка все еще продолжала появляться. Программа запущена, но после ввода имени и идентификатора студентов она заполняет идентификатор проекта самостоятельно и появляется диалоговое окно с сообщением
Необработанное исключение при 0x010163FF в Project2.exe: 0xC0000005: Доступ нарушение чтения местоположения 0x0000001 C.
, что в итоге заставляет меня сломаться. Это программа для "Автоматизированной системы FYP".
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
class Student {
public:
string s_name;
int s_id;
void display() //function to display name and id
{
cout << "Student Name : " << s_name << endl
<< "Student ID : " << s_id << endl;
}
Student(char a[50], double b) //parameterized constructor to initialize name and id
{
s_name = a;
s_id = b;
}
};
class Project {
private:
Student* student1;
Student* student2;
Student* student3;
Student* student4;
int p_id;
string p_title;
string p_detail;
public:
Project(int pid, string ptitle, string pdetail, Student* s1, Student* s2)
{
p_id = pid;
p_title = ptitle;
p_detail = pdetail;
student1 = s1;
student2 = s2;
}
void show()
{
cout << "\nProject ID : " << p_id << endl;
cout << "Project Title : " << p_title << endl;
cout << "Project Detail : " << p_detail << endl;
}
void show1()
{
student1->display();
student2->display();
student3->display();
student4->display();
}
};
int main()
{
char n1[50], n2[50], n3[50], n4[50];
double ID1, ID2, ID3, ID4;
cout << "\nEnter name of student : ";
cin.getline(n1, 50);
cout << "Enter ID of student : ";
cin >> ID1;
Student S1 = Student(n1, ID1); //initializing the data members of object 'S' implicitly
cin.ignore();
cout << "\nEnter name of student : ";
cin.getline(n2, 50);
cout << "Enter ID of student : ";
cin >> ID2;
Student S2 = Student(n2, ID2); //initializing the data members of object 'S' implicitly
cin.ignore();
cout << "\nEnter name of student : ";
cin.getline(n3, 50);
cout << "Enter ID of student : ";
cin >> ID3;
Student S3 = Student(n3, ID3);
cin.ignore();
cout << "\nEnter name of student : ";
cin.getline(n4, 50);
cout << "Enter ID of student : ";
cin >> ID4;
Student S4 = Student(n4, ID4);
cout << "\nStudent 1 : " << endl;
S1.display();
cout << "\nStudent 2 : " << endl;
S2.display();
cout << "\nStudent 3 : " << endl;
S3.display();
cout << "\nStudent 4 : " << endl;
S4.display();
//PROJECT
string detail1 = "In collaboration with PCAA";
string detail2 = "Communication for Teacher/Student.";
Project P1('1', "Disaster Management System", detail1, &S1, &S2);
P1.show();
P1.show1();
Project P2('2', "E bridge", detail2, &S3, &S4);
P2.show();
P2.show1();
_getch();
return 0;
}