【问题标题】:Dynamic array creation动态数组创建
【发布时间】:2016-01-10 13:07:14
【问题描述】:

我有一个测试离线应用程序,它应该用作销售硬拷贝音乐(如唱片)的 e-bay。用户将能够出售和购买记录(这是一个测试应用程序,因此信用被表示为一个简单的变量)。我有两个动态数组:一个用于项目,一个用于用户,两个数组都在负责数据操作的 Session 类中。数组保存为二进制文件并在启动时加载。我的主要问题是我无法使用用户列表数组进行操作,尽管我可以对项目数组执行任何操作。为了简单起见,我省略了大部分代码,以下只是重要的部分。

class User {
    string password;
    string username;
    int credit;
}

class Item {
    string name;
    string label;
    int price;
}

class Vinyl:public Item{}
class Disk:public Item{}

class Session{
    Item **itemlist;
    User **userlist;

    Session() {
        itemlist=new Item*[100];
        userlist=new User*[100];
    }

    void CreateItem(string name,string label,int price,) {
        itemlist[lsize]=new Vinyl(name,label,price);
    }

    void CreateUser(string uname, string pass) {
        list[usize]=new User(uname,pass,count);
    }
}

【问题讨论】:

  • 当你想要一个 C++ 中的“动态数组”时,你应该自动想到std::vector
  • 标记为c++14,但使用new 和指向指针的指针。母亲。的。上帝。
  • 你说“数组保存到二进制文件”我也很担心,你只保存指针吗?您是否“按原样”保存结构?两者都不会很好,你真的应该了解serialization
  • 保存过程仍在开发中,但我想保存/加载整个结构。 @ildjarn 抱歉,规范不清楚,但我现在正在学习 c++,因此规范可能会产生误导。

标签: c++ c++14


【解决方案1】:

您的问题不知何故未能出现在您所写的文本中。但无论如何,请使用std::vector。这就是它的用途(毫无疑问,它可以解决代码所指示的众多问题中的任何问题)。

【讨论】:

  • 我对这个问题投了反对票,我将其标记为不清楚,我对你的回答投了反对票,因为它似乎是对一个糟糕问题的随机回答。
猜你喜欢
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 2020-06-17
  • 2016-06-12
  • 2011-02-12
  • 2015-08-10
  • 1970-01-01
相关资源
最近更新 更多