2013-04-07 111 views
0

我是初學者下,在不過CSHARP深諳++程序員..初學C++,指針和繼承錯誤

對於我的一個任務,我們必須創建一個基於文本的迷宮遊戲,我到目前爲止有一個頭文件,它包含方向聲明和方法設置方向N,S,W,E

在主要我得到並設置設置房間可以進入的方向。下面是代碼的例子,我已經包括每個語句之一削減長度,即只有南方得到和設置。

void Room::setS(Room* nextRoom) 
{ 
south = nextRoom; 
} 

Room* Room::gS(){return south;} 

Room* A = new Room("A"); 
Room* B = new Room("B"); 

A->setE(B); 
A->setS(E); 

Room* myPosistion = A; 
string location = *myPosistion->gName(); 

while(location !="L") 
{ 
    cout << "You are In Room "<< location << endl; 
    } 

在while循環我需要能夠訪問室::方法,(房間:: GS()),所以沿

if(location->gS() == NULL 
//do nothing 
else 
{ 
    cout<<"1. South"<<endl; 
} 

的問題是行的東西,我不能讓位置變量訪問室::方法,我知道我在想念着一些非常基本的,但只是不能讓我上的手指..

感謝您的幫助

+2

我知道你來自C#,但在C++'新'不會做你認爲它的作用。 – 0x499602D2 2013-04-07 14:23:15

+1

你在這裏有一個根本性的誤解。事實上'Room'上的方法返回一個字符串不會使字符串成爲Room,或者使用它的任何方法。 – Linuxios 2013-04-07 14:24:31

+0

'location'是一個字符串,而不是'Room *'。 – Beta 2013-04-07 14:24:43

回答

1

您需要使用指針對象我在該線包含名稱

嘗試更多的東西串的nstead:

while(myPosistion->gName().compare("L") != 0) 
{ 
    cout << "You are In Room "<< myPosistion->gName() << endl; 
    if(myPosistion->gS() != NULL) 
    { 
     cout << "1. South : "<< myPosistion->gS()->gName() << endl; 
    } 
    //TODO some processing here! 
} 

當您使用位置變量(string),你的參考對象

+0

謝謝,這是答案,然而while(myPosistion-> gName()。compare(「L」)!= 0)拋出的錯誤必須具有類類型,而myPos-> gname()僅列出內存位置當顯示,而不是房間:)謝謝 – Hitchxvi 2013-04-07 17:37:15

+0

你從來沒有說過什麼gName()被定義爲。 – 2013-04-08 07:27:55