我正在學習C++,而我目前有一些問題,我不知道答案。我創建了這個頭文件Object1.h並且可以編譯這個文件,但是當我運行Test.cpp時,由於* sibling訪問衝突,Visual Studio會拋出一個錯誤。奇怪的是,我可以使用Dev C +運行它,它只返回值2.因此,我想問爲什麼分配*兄弟會創建一個錯誤,爲什麼我不能使用setAddress()更改Person B的地址。如果有人能給我一些答案或提示,我會很感激。提前致謝。無法在Visual Studio 2010中的自引用對象中分配指針
//This is Object1.h
#include <
iostream>
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 <
iostream>
#include <
string>
#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 <<
B.getAddress() <<
endl;
cout <<
B.ID;
system("Pause");
return 0;
}
你能提供你得到的確切的錯誤嗎?你知道哪一行會拋出錯誤嗎? – JoshD 2010-10-03 18:49:59
嗨喬希,我在Object1.h函數addSibling()第32行得到一個錯誤。 「兄弟」變量錯誤。錯誤:無法評估表達式。但是,如果我編譯並使用Dev-C運行,則不會通知錯誤。 – Steven 2010-10-03 19:01:36