2

我正在用 C++ 完成一项作业,这是一种我不是特别精通的语言。

我试图在文件 main.cpp 中声明一个动态的“帐户”对象数组:

Account * acctArray = new Account[];

main.cpp 包括 Account.h:

class Account {
private:
    int customerID;
    int BSB;
    int acctNumber;
    string surname;
    string firstName;
    double balance;
    double withdrawn;
public:
    Account() {};
    //setters
    void setCustID(int ID);
    void setBSB(int inBSB);
    void setAcctNo(int number);
    void setSurname(string sname);
    void setFirstName(string fname);
    void setBalance(double bal);
    void setWithdrawn(double withd);
    //getters
    //(snipped for irrelevance)
    //methods
    bool withdraw(double amount);
};

但是,在我的 uni 的 unix 机器(必须提交作业的机器)上编译时,出现以下错误:

“main.cpp”,第 130 行:错误:“Account[]”类型不完整。

我尝试编译

Account * acctArray = new Account[5];

看看我是否可以隔离问题,并且这条线编译得很好。

我究竟做错了什么??我担心解决方案在于指针/引用以及我对此缺乏理解。

4

2 回答 2

5

C++ 中的数组具有固定大小。没有内置的“动态数组”功能。如果您想要一个动态数组,请使用std::vector<Account>.

我正在用 C++ 完成一项作业,这是一种我不是特别精通的语言。

最好尽可能避免new显式动态分配。如果您认为您需要自己使用new和管理它来动态分配某些东西,那么可能有更好的方法来完成任务。

于 2012-08-24T03:34:04.583 回答
0

当涉及到对象时,C++ 有点令人困惑。处理对象时要记住的一件事是,您几乎总是希望它们成为指针,特别是为此目的。这就是这样new Account做的;它返回一个指向帐户的指针,而不是帐户本身。此外,您希望您的数组是一个单独的指针。因此,您要做的是制作一个双指针

这实际上很简单。当你实例化你的对象数组时,你所要做的就是:Account **acounts = new Account*

我创建了一小段示例代码来演示这一点,它允许您在数组中创建任意数量的对象。您可以在 codepad 上查看和使用代码。

于 2012-08-24T03:45:35.250 回答