1

作成した「チーム」クラスのデータ フィールドのアクセサ関数を作成しようとしています。各チーム メンバーには、「パートナー」と呼ばれる別のチーム メンバーへのポインター データ フィールドがあります。getter で、チーム メンバーのパートナーのアドレスを返したい。

データ フィールド Partner は次のように定義されます。

Team *partner;

ヘッダーで次のように関数を定義しました。

Team getPartner();

これまでに試したアクセサ関数は次のとおりです。

Team Team::getPartner()
{
    return *partner;
}

メイン関数で使用しようとしている構文は次のとおりです (各チーム メンバーはポインターとして作成されました。Harry は、パートナーが設定されているオブジェクトの 1 つの名前です)。

cout << Harry->getPartner() << endl;

別のオブジェクトへのポインタに対するこのアクセサ関数は、動作していない私のコードの唯一の部分です。残念ながら、コンパイラが表示するエラー メッセージを理解できません。アドバイスをいただければ幸いです。

4

1 に答える 1

3

パートナーのアドレスを返したい場合は、関数の戻り値の型でそう言ってください

Team* getPartner();

...

Team* Team::getPartner()
{
    return partner;
}

または、パートナーへの参照を返すこともできます

Team& Team::GetPartner()
{
     return *partner;
}

しかし、するために

cout << Harry->GetPartner();

チームの << を理解する方法をコンパイラに伝える必要があります。

ostream& operator << (ostream& o, const Team& team)  
{ 
    return o << team.name << team.somethingelse;
}
于 2013-04-01T19:37:47.577 に答える