2013-04-05 99 views
4

我創建了2個類,分支和帳戶,並且我希望我的Branch類具有一個帳戶指針數組,但我無法執行此操作。它說「不完整的類型是不允許的」。我的代碼有什麼問題?嘗試創建指針數組時不允許使用不完整類型

#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--------------*/ 
    }; 
+2

數組在編譯時是否已知大小?另外,你確定你需要'Account'指針,而不僅僅是對象嗎? – chris 2013-04-05 01:22:11

+0

開始時數組的大小爲0,我將動態擴展它。是的,我需要帳戶指針,因爲帳戶對象的數組是在另一個文件,我需要指出它也從另一個類名爲客戶。 – 2013-04-05 01:27:04

+0

我不明白你的意思。首先,你可以使用一個'std :: vector'來完成調整大小和一切。關於你的結構,如果'Customer.h'和'Branch.h'包含'Account.h',它們都可以使用普通對象。沒有指針需要。 – chris 2013-04-05 01:33:33

回答

9

儘管您可以創建指向前向聲明類的指針數組,但不能創建未知大小的數組。如果你想在運行時創建的陣列中,使一個指針的指針(這當然也是允許的):

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

考慮到Account類的應用,我認爲使用比c樣式原始數組更好的容器是一個好主意,它具有便利功能和類似的東西。另外它不需要手動刪除。 – dtech 2013-04-05 01:39:44

+0

@ddriver這是絕對正確的。但是,這個代碼看起來像是一個學習任務,所以OP還沒有研究容器。 – dasblinkenlight 2013-04-05 01:41:26

+0

好吧,我強調**你必須遵循三五個規則**。當它不起作用時不要回來,因爲你忽略了它。 – chris 2013-04-05 01:43:52

3

你需要指定數組的大小...你不能就這麼走掛在那裏的托架沒有任何東西在裏面。

相關問題