2012-09-03 18 views
0

我傳遞對象作爲指針,然後我想使用傳遞的對象值將它們分配給其他方法。如何從一個對象的指針傳遞變量?

這是我如何傳遞對象:

Author *pAuthor = new Author("John", "Doe"); 
Publisher *pPublisher = new Publisher("Wrox", "10475 Crosspoint Blvd.", "Indianapolis"); 
Book *pBook = new Book("Memory Management", pAuthor, pPublisher, 39.99); 

cout << pBook->getBookInfo() << endl; 

現在,在其他類我必須閱讀對象的傳遞的變量,並指定他們在其他地方。在這段代碼中,我只使用傳遞值而不使用對象,因爲我不知道如何處理它們。

Book::Book(string title, Author *pAuthor, Publisher *pPublisher, double price) 
{ 
    this->title = title; 
    this->price = price; 
} 

如何從傳遞的對象中讀取傳遞值?

編輯,在我的問題中可能會有一些混淆。下面的代碼必須訪問這些變量,然後插入稍後使用它們的方法中。

我嘗試插入的每個變量都是這樣的。我不想訪問作者的私有變量,因爲我無法訪問作者的私有變量,但它們仍然是空的。

我現在所擁有的代碼是:

Book::Book(string title, Author *pAuthor, Publisher *pPublisher, double price) 
{ 
    this->title = title; 
    this->price = price; 

    author.setFirstName(); 
    author.setLastName(); 

    publisher.setName(); 
    publisher.setAddress(); 
    publisher.setCity(); 
} 
+0

'pAuthor-> first',數據'pPublisher->城市'等。 – oldrinb

+0

@veer:這將工作,但我的本地變量是私人的。 – HelpNeeder

+0

@HelpNeeder,這正是因爲他們應該是,爲什麼你使用getter和setter函數這正是。 – mah

回答

2

使用此語法,假設你有這些變量,它們是公開的。

pAuthor->first_name ; 
pAuthor->last_name ; 

而對於其他類。

pPublisher->author ; 
pPublisher->name ; 
pPublisher->place ; 

'->'運營商取消引用指向對象,或者換句話說,把你帶到你想要的變量。

如果您將這些數據成員用作私有成員,則會更好。如果你這樣做,你不能直接訪問它們。你將不得不使用getter和setter函數來讀取和寫入它們的值。

他們看起來像這樣。

pAuthor->getfirst_name() ; 
pAuthor->getlast_name() ; 

pPublisher->getauthor() ; 
pPublisher->getname() ; 
pPublisher->getplace() ; 

最後,如果您不通過價值傳遞這些對象更好。通過引用傳遞它們,並在它們之前使用const

2

理想情況下,你提供你的對象定義「吸氣」和「二傳手」的功能,並使用它們。

2

你傳遞一個指向一個對象的指針,通過該指針你可以調用該類的任何公共方法。像這樣

pAuthor->public_member_function(); 

您將需要實現Author類的功能,以允許其他類訪問要能夠檢索

相關問題