Как вернуть точечный объект, агрегированный в другом классе? - PullRequest
0 голосов
/ 23 ноября 2011

Как вернуть точечный объект, агрегированный в другом классе?Я пытаюсь вернуть точечный объект, который является частным членом класса quad.Я написал функцию, и она компилируется, но я не знаю правильный синтаксис для вызова этой функции.

Point Quad::getA()
{
    return Point a;
}


 void Quad::check()
 {
    cout << this->getA();  //will not work
 }

Ответы [ 3 ]

0 голосов
/ 23 ноября 2011

return Point a; неверно.Вы либо создаете объект и затем возвращаете его, либо создаете объект в самом операторе return.

Правильный синтаксис:

Point Quad::getA()
{
    Point a;
    return a;
}


Point Quad::getA()
{
    return Point();
}
0 голосов
/ 23 ноября 2011

Это будет работать:

class Quad {
  Point a;
  Point getA();
  void check();
};

Point Quad::getA()
{
    return a;
    // or: return Point(); 
    // to return a new point
}

void Quad::check()
{
    cout << getA(); // requires << be overloaded
    // perhaps this is what you want:
    // cout << getA().x;

}
0 голосов
/ 23 ноября 2011

Внутри класса

 Point* p;

В функции GetA ().

if (p== null) {
   p= new Point();
 }
return p;

Возвращение указателя было бы лучшим решением. Поддержание единственного указателя в течение всего жизненного цикла программы облегчит разработчику его уничтожение. Для справки http://en.wikipedia.org/wiki/Singleton_pattern

Извините, мой плохой. Имел это в виду, но передал это неправильно.

...