【问题标题】:Trying to access class a members through one of class b functions, what went wrong?尝试通过 b 类函数之一访问 a 类成员,出了什么问题?
【发布时间】:2015-12-26 02:48:28
【问题描述】:

append() 函数中,我试图通过Arraylist 类访问User 类成员,其中我有一个User 类型的数组,有什么帮助我可以访问它们吗?

class User 
{
    string username;
    string password;

    void login();
    void logout();
    void signup();
    void search();
};

class ArrayList
{
public:
    User* root;
    User* elems;
    int capacity;
    int elemsCnt;
    void expand();
    ArrayList();
    ~ArrayList();
    void append(string, string);
};

void ArrayList::append(string name, string pass)
{
    if (capacity == elemsCnt)
        expand();

    elems[elemsCnt++].username = name;
    elems[elemsCnt++].password = pass;
} 

【问题讨论】:

  • 那么,出了什么问题?您可以发布您收到的错误消息吗?我猜你没有为elems 初始化/分配内存?
  • 以后请养成先提取最小例子的习惯。例如,您的课程ArrayList 完全无关紧要。也就是说,不要将原始指针用作数组,而是使用std::vector(或其他容器)。

标签: c++ class arraylist


【解决方案1】:

默认情况下,类成员是私有的。您需要将它们公开以从外部访问它们:

class User 
{
public: // Add this!
    string username;
    string password;

    void login();
    void logout();
    void signup();
    void search();
};

【讨论】:

  • 是的,这就是导致错误的原因。感谢您的帮助:)
  • 顺便说一句,您的 append 方法中有一个错误。当您设置 usernamepassword 时,您将索引增加两次。
猜你喜欢
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多