- このオリジナルの問題は解決されましたが、この問題は解決されました。
GeoObject :: printInfo()を使用してレイヤー:: printInfo()を使って情報を印刷するにはどうすればよいですか?構造について印刷のためのリターンポイント、使用された継承が使用されます。
:マーカーは、クラスGeoObjectからinherritedされます。 GeoObjectには、ファイルPoint.hが含まれています。クラスPointに格納される情報は、int longtおよびint lat(longitude、座標点の緯度)です。
今は、仮想メソッドprintInfo(GeoObjectから継承されています)を上書きして、Markerクラスのオブジェクトに格納されている情報を印刷しようとしています。問題は、この行である: str << GeoObject::getDesc() << ": " << GeoObject::getPoint().Print() << ", " << size << ", "<< colour ;
は私がGeoObject :: getPointは、Point型のオブジェクトを返すないと結論し、私がコーディネート印刷することはできませんよ、なぜ私は理解していない。このことからerror: no matching function to call to 'Point::Print()'
を取得します。
は、コードの重要な部分(私はあなたにこの問題のために無関係なすべてのコードを免れる)
(Marker.cpp)
string Marker::printInfo() const {
ostringstream str ; // used like ostream out
// get the description given to the GeoObject stored in this Marker
str << GeoObject::getDesc() << ": " << GeoObject::getPoint().Print() << ", " << size << ", "<< colour ;
return str.str() ; // take stringversion of string }
(GeoObject.h)
Point getPoint() const
{
return coordinate ;
}
です
(Point.cpp)
void Print(ostream &out)
{
out << longt <<", "<<lat ;
}
'印刷()' 1つの引数を期待しています。 – songyuanyao
上記の問題は解決しましたが、何とか何も表示されません。 GeoObjectクラスの異なるオブジェクトへのポインタ(継承クラスはMarkerとPolygon)はリスト myLayerに格納されます。 Layer :: printInfo()メソッドでGeoObject :: printInfo()メソッドが呼び出され、レイヤーのすべてのデータが印刷されます。下記のコード(**次のコメント**参照)が使用されています。出力では、Layer :: printInfo()は呼び出されていますが、情報は表示されません。どうして? **どのようにしてその情報を印刷できますか?** –
Wietske
void Layer :: printInfo()const { //格納されているすべてのGeoObjectに対して、書き込まれたprintInfoメソッドを使用します。 for(リスト :: const_iterator it = myLayer.begin(); it!= myLayer.end(); it ++) { cout << (*it)-> printInfo(); // printInfoは文字列を返します } } –
Wietske