【问题标题】:How do I return a point object aggregated in a another class?如何返回聚合在另一个类中的点对象?
【发布时间】:2012-01-04 11:47:01
【问题描述】:

如何返回聚合在另一个类中的点对象?我正在尝试返回一个点对象,它是 quad 类的私有成员。我已经编写了该函数并且它可以编译,但我不知道调用该函数的正确语法。

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


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

【问题讨论】:

    标签: c++ class composition aggregation


    【解决方案1】:

    这将起作用:

    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;
    
    }
    

    【讨论】:

    • 我试过这个但我得到一个相同的编译器错误“在 'std::cout Quad::getA( )"
    • @user954004 你需要重载ostream&amp; &lt;&lt;。你到底想打印什么?
    【解决方案2】:

    return Point a; 是错误的。您要么创建一个对象然后返回,要么在 return 语句本身中创建该对象。

    正确的语法:

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

    【讨论】:

      【解决方案3】:

      课内

       Point* p;
      

      在 GetA() 函数中。

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

      返回指针会是更好的解决方案。在程序的整个生命周期中维护一个指针将使开发人员更容易正确地销毁它。供参考http://en.wikipedia.org/wiki/Singleton_pattern

      对不起,我的错。有这个想法,但表达错误。

      【讨论】:

      • 这将返回 Point* 而不是 Point。通常最好传入一个已经为函数操作创建的指针,否则很容易忘记这个对象以后需要删除。
      猜你喜欢
      • 2021-09-02
      • 2014-10-18
      • 2019-12-12
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 2019-07-30
      • 2022-10-15
      相关资源
      最近更新 更多