これはより大きなプロジェクトの一部です。
基本的に、プログラムを管理するためのクラス「X」があり、そのクラスにはクラス「Y」からのオブジェクトへのポインタの配列があり、クラス「Y」のオブジェクトにアクセスする必要がある別のクラス「Z」があります。たとえば、プリント。
「このスコープで宣言されていません」というエラーが表示されます
クラス「Y」のクラス「Z」の友達を作ろうとしましたが、うまくいきません。
私はこの問題を実証するためのコードを書きました:
#include <iostream>
using namespace std;
class BaseClass;
class OtherClass;
class Manager;
class BaseClass
{
friend class OtherClass;
public:
BaseClass(){}
void setNum(int num){_num = num;}
int getNum(){return _num;}
private:
int _num;
};
class OtherClass
{
public:
OtherClass(){}
void print(){
cout << _bc[0]->getNum() << " " << _bc[1]->getNum() << endl;
}
};
class Manager
{
friend class OtherClass;
public:
Manager(){}
void run(){
_bc = new BaseClass*[10];
_bc[0]->setNum(20);
_bc[1]->setNum(30);
_oc.print();
}
private:
BaseClass ** _bc;
OtherClass _oc;
};
int main()
{
Manager m;
m.run();
return 0;
}
たぶんこれはとても簡単ですが、ここでは遅く、私は眠いので、寝る前にこの問題を解決したいと思います。
編集済み:私のプロジェクトにはクラスマネージャーがあり、そのクラスにはクライアントと注文へのポインターの配列があります。クラスオーダーは、とりわけクライアントを受け取ります。そのため、オーダーに挿入するクライアントを選択するために、そのポインターの配列にアクセスする必要があります。