Я изучаю C ++, и в настоящее время у меня есть несколько вопросов, ответы на которые я не знаю.Я создаю этот заголовочный файл Object1.h и могу скомпилировать этот файл, но когда я запускаю Test.cpp, Visual Studio выдает ошибку из-за нарушения прав доступа * sibling.Странно то, что я могу запустить его, используя Dev C +, и он возвращает только значение 2. Поэтому я хочу спросить, почему назначение * sibling приведет к ошибке и почему я не могу изменить адрес Person B с помощью setAddress ().Я буду очень признателен, если кто-нибудь даст мне ответ или намеки.Заранее спасибо.
//This is Object1.h
#include <code><</code>iostream<code>></code>
using namespace std;
class Person{
public:
Person(int ID);
void setAddress(string addr);
string getAddress();
void addSibling(Person *p);
Person getSibling();
int ID;
private:
string address;
Person *sibling;
};
Person::Person(int ID){
this->ID = ID;
}
void Person::setAddress(string addr){
this->address = addr;
}
string Person::getAddress(){
return address;
}
void Person::addSibling(Person *p){
*sibling = *p;
}
Person Person::getSibling(){
return *sibling;
}
//This is Test.cpp
#include <code><</code>iostream<code>></code>
#include <code><</code>string<code>></code>
#include "Object1.h"
using namespace std;
int main(){
Person A(1);
Person B(2);
A.addSibling(&B);
// Change the address of person B through person A's getSibling()
A.getSibling().setAddress("123 Street");
cout <code><<</code> B.getAddress() <code><<</code>endl;
cout <code><<</code> B.ID;
system("Pause");
return 0;
}