2011-11-23 73 views
-2

如何返回在另一个类中聚合的点对象?我试图返回一个四元类的私有成员的点对象。我编写了函数并编译,但我不知道调用该函数的正确语法。如何返回在另一个类中聚合的点对象?

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


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

您的代码不编译。 – Jagannath

回答

0

这将工作:

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

ive试过这个,但我得到一个相同的编译器错误“不匹配'运营商<<'在'std :: cout <<((Quad *)this) - > Quad :: getA()” – user954004

+0

@ user954004您需要重载'ostream&<<'。你想要打印什么? – Pubby

+0

哦,我确定了,没有在代码中看到您的意见,谢谢 – user954004

-1

内部类

Point* p; 

在木屐()函数。

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

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

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

+0

这将返回Point *不是Point。传递一个已经创建的指针来处理函数通常会更好,否则很容易忘记这个对象需要稍后被删除。 – Godwin

0

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

正确的语法:

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


Point Quad::getA() 
{ 
    return Point(); 
} 
相关问题