home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / source / chapter07 / inventory_pointer.cpp < prev    next >
C/C++ Source or Header  |  2004-04-11  |  2KB  |  51 lines

  1. // Inventory Pointer
  2. // Demonstrates returning a pointer
  3.  
  4. #include <iostream>
  5. #include <string>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. //returns a pointer to a string element
  11. string* ptrToElement(vector<string>* const pVec, int i);
  12.  
  13. int main()
  14. {
  15.     vector<string> inventory;
  16.     inventory.push_back("sword");
  17.     inventory.push_back("armor");
  18.     inventory.push_back("shield");
  19.  
  20.     //displays string object that the returned pointer points to
  21.     cout << "Sending the objected pointed to by returned pointer:\n";       
  22.     cout << *(ptrToElement(&inventory, 0)) << "\n\n";
  23.  
  24.     //assigns one pointer to another -- inexpensive assignment
  25.     cout << "Assigning the returned pointer to another pointer.\n";
  26.     string* pStr = ptrToElement(&inventory, 1);
  27.     cout << "Sending the object pointed to by new pointer to cout:\n";
  28.     cout << *pStr << "\n\n";
  29.     
  30.     //copies a string object -- expensive assignment
  31.     cout << "Assigning object pointed by pointer to a string object.\n";
  32.     string str = *(ptrToElement(&inventory, 2));  
  33.     cout << "Sending the new string object to cout:\n";
  34.     cout << str << "\n\n";
  35.     
  36.     //altering the string object through a returned pointer
  37.     cout << "Altering an object through a returned pointer.\n";
  38.     *pStr = "Healing Potion";
  39.     cout << "Sending the altered object to cout:\n";
  40.     cout << inventory[1] << endl;
  41.     
  42.     return 0;
  43. }
  44.  
  45. string* ptrToElement(vector<string>* const pVec, int i)
  46. {
  47.     //returns address of the string in position i of vector that pVec points to
  48.     return &((*pVec)[i]);  
  49. }
  50.  
  51.