1. ホーム
  2. c++

[解決済み] ポインターの配列を作成しようとしているときに、不完全な型が許可されない

2022-02-28 10:14:39

質問

BranchとAccountの2つのクラスを作成し、BranchクラスにはAccountポインタの配列を持たせたいのですが、うまくいきません。不完全な型は許可されませんと表示されます。私のコードに何か問題があるのでしょうか?

#include <string>
#include "Account.h"

using namespace std;



    class Branch{

    /*--------------------public variables--------------*/
    public:
        Branch(int id, string name);
        Branch(Branch &br);
        ~Branch();
        Account* ownedAccounts[];    // error at this line
        string getName();
        int getId();
        int numberOfBranches;
    /*--------------------public variables--------------*/

    /*--------------------private variables--------------*/
    private:
        int branchId;
        string branchName;
    /*--------------------private variables--------------*/
    };

解決方法は?

前方宣言されたクラスへのポインタの配列を作成することはできますが、サイズが不明な配列を作成することはできません。実行時に配列を作成する場合は、ポインタへのポインタを作成します(もちろんこれもOKです)。

Account **ownedAccounts;
...
// Later on, in the constructor
ownedAccounts = new Account*[numOwnedAccounts];
...
// Later on, in the destructor
delete[] ownedAccounts;