2011-11-23 61 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(); 
} 
相關問題