-1

私は2つのクラスを持っています:companycpworker.

私は会社のベクトルを の関数に渡そうとしていますがcpworker、ベクトルに到達しようとするとできません:

companyクラスで:

vector<project> projects;
friend void cpworker::registerWork();

cpworkerクラスで:

void cpworker::registerWork()
{   
    for (int i = 0; i < company.projects.size(); i++)
    {

    }
}

ご覧のとおり、ベクトルのサイズに到達しようとしていますが、できません。また、getプロジェクトのサイズを返すために会社へのメソッドを使用しませんでした。ループの中に入れます。

これが私が得ているエラーです(すべて for ループ行にあります):

* left of .projects must have class/struct/union
* left of .size must have class/struct/union
* type name is not allowed

4

2 に答える 2

3

companyはクラスであり、プロジェクトが静的に宣言されていない限り、クラスのインスタンスなしではアクセスできません。インスタンスを作成するか、プロジェクトを静的メンバーにします。

お役に立てれば。

于 2012-12-27T14:50:19.523 に答える
0

メンバー関数のfriend宣言を作成することはできません。グローバル関数またはクラス全体をフレンドとして宣言できます。C++ ref、フレンドシップと継承も参照してください。

一般に、friend を使用することは、クラスを強く結合するため、まったく良い設計アイデアではありません。より良い解決策は、インターフェイスを結合することです (公開する必要はありません)。まれに、それが適切な設計上の決定である場合もありますが、ほとんどの場合、内部の詳細に当てはまります。

于 2012-12-27T15:24:18.507 に答える