Hi there. To make it clear, I'm no OOP, C++ or Qt expert, so I made a few simple functions to clear up a few things about objects and pointer to objects. Here is the code, a class named cat:
Qt Code:
  1. class Cat {
  2. public:
  3. void SetColor(string clr) {
  4. color = clr;
  5. }
  6.  
  7. string GetColor() {
  8. return color;
  9. }
  10.  
  11. private:
  12. string color;
  13. };
To copy to clipboard, switch view to plain text mode 
, and sample usage:
Qt Code:
  1. void MainWindow::GenerateCats() {
  2. Cat *tofi = new Cat();
  3. tofi->SetColor("orange");
  4. printf("tofi color1 :%s\n",tofi->GetColor().c_str());
  5.  
  6. Cat smuki;
  7. printf("smuki color 1:%s\n",smuki.GetColor().c_str());
  8. smuki.SetColor("black");
  9. printf("smuki color 2:%s\n",smuki.GetColor().c_str());
  10.  
  11. Cat *sivkolin = &smuki;
  12. printf("sivkolin color 1:%s\n", sivkolin->GetColor().c_str());
  13.  
  14. smuki.SetColor("gray");
  15. printf("sivkolin color 2:%s\n", sivkolin->GetColor().c_str());
  16.  
  17. ProcessCats1("tofi",*tofi,"white");
  18. printf("tofi color 2 :%s\n", tofi->GetColor().c_str());
  19.  
  20. ProcessCats1("smuki",smuki,"white");
  21. printf("smuki color 3:%s\n", smuki.GetColor().c_str());
  22.  
  23. ProcessCats2("smuki",&smuki,"no color");
  24. printf("smuki color 4:%s\n", smuki.GetColor().c_str());
  25.  
  26. printf("sivkolin color 3:%s\n", sivkolin->GetColor().c_str());
  27.  
  28. ProcessCats2("sivkolin",sivkolin,"gold");
  29. printf("sivkolin color 4:%s\n", sivkolin->GetColor().c_str());
  30.  
  31. printf("smuki color 5:%s\n", smuki.GetColor().c_str());
  32.  
  33. delete tofi;
  34. //delete smuki;
  35. //smuki = NULL;
  36. delete sivkolin;
  37. }
  38.  
  39. void MainWindow::ProcessCats1(string name,Cat CatSample,string clr) {
  40. printf("ProcessCat1 Cat %s color:%s\n",name.c_str(),CatSample.GetColor().c_str());
  41. CatSample.SetColor(clr);
  42. }
  43.  
  44. void MainWindow::ProcessCats2(string name,Cat *CatSample,string clr) {
  45. printf("ProcessCats2 Cat %s color:%s\n",name.c_str(), CatSample->GetColor().c_str());
  46. CatSample->SetColor(clr);
  47. }
To copy to clipboard, switch view to plain text mode 
the output looks like:
Qt Code:
  1. tofi color1 :orange
  2. smuki color 1:
  3. smuki color 2:black
  4. sivkolin color 1:black
  5. sivkolin color 2:gray
  6. ProcessCat1 Cat tofi color:orange
  7. tofi color 2 :orange
  8. ProcessCat1 Cat smuki color:gray
  9. smuki color 3:gray
  10. ProcessCats2 Cat smuki color:gray
  11. smuki color 4:no color
  12. sivkolin color 3:no color
  13. ProcessCats2 Cat sivkolin color:no color
  14. sivkolin color 4:gold
  15. smuki color 5:gold
To copy to clipboard, switch view to plain text mode 
My questions:
  1. Is "->" notation when accessing members addressed with a pointer a C++ or Qt specific?
  2. Function ProcessCats1 expects an object of type Cat not a pointer, why must I use
    Qt Code:
    1. ProcessCats1("tofi",*tofi,"white");
    To copy to clipboard, switch view to plain text mode 
    instead of
    Qt Code:
    1. ProcessCats1("tofi",&tofi,"white");
    To copy to clipboard, switch view to plain text mode 
  3. Same analogy with function ProcessCats2 which requires a pointer to object Cat and I do
    Qt Code:
    1. ProcessCats2("smuki",&smuki,"no color");
    To copy to clipboard, switch view to plain text mode 
    , but smuki is an object, why do I need the "&" meaning "the value at address".
  4. I can delete object created on the heap like this
    Qt Code:
    1. delete tofi;
    To copy to clipboard, switch view to plain text mode 
    , but how do I delete smuki in the scope of same function if I need (I know it gets destroyed when out of scope).
  5. When I do
    Qt Code:
    1. delete sivkolin
    To copy to clipboard, switch view to plain text mode 
    I delete just the pointer to value of smuki, so I can still access object smuki right?
Much thanks if advance for your help.