c++ - 无法从 C++ 中的类中访问私有(private)成员?

标签 c++ arraylist

所以我正在尝试用 C++ 自学数据结构。为此,我创建了一个 ArrayList 类,其中包含一个 int* 类型的成员变量 arrayData 和一个从该指针访问值的 get 方法。我来自 Java 背景,C++ OOP 有点奇怪,尤其是头文件和源文件的分离。在编译时,我得到“错误:'int* ArrayList::arrayData' 不是 'class ArrayList' 的静态数据成员”。我用 ArrayList::标记它们以使它们成为 ArrayList 的成员,那么为什么不将它们标记为这样呢?如果您能指出如何访问我的变量的方向,非常感谢您。
数组列表.cpp:

#include "ArrayList.h"

ArrayList::ArrayList(int size) {
  arrayData = new int[size];

}

ArrayList::~ArrayList() {
  delete arrayData;
}
int* ArrayList::get(int index) {
  return (*(this.arrayData))[index];
}
int* ArrayList::arrayData;

数组列表.h:
#define ARRAYLIST_H_

class ArrayList {
public:
    ArrayList(int size);
    ~ArrayList();
    int get(int index);
private:
    int* arrayData;
};
#endif /* ARRAYLIST_H_ */

最佳答案

这一行:

int* ArrayList::arrayData;

在源文件中没有任何意义。编译器认为您正在引用 ArrayList 的静态变量(因为您已添加类名)。删除此行。

您将能够从其他方法访问 arrayData。

另外,请使用 std::unique_ptr<int>而不是原始指针。那么你的内存保证在使用后会自动释放。

关于c++ - 无法从 C++ 中的类中访问私有(private)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62355372/

相关文章:

c++ - 堆积面积计算

python - 将 Eigen 库与 cppyy 一起使用

java - 数组列表。在一个索引中连接字符串值

java - Android-通过ArrayList时应用崩溃

c++ - 将 UTF8 转换为 std::wstring 的跨平台方式

c++ - 未找到符号 C++ 打印 vector 到控制台

java - java中ArrayList转Hashset

java - 使用 resultSet 值的 HashMap 到 ArrayList

java - 在 Java 中将字符串转换为 ArrayList<String>

c++ - 对于 Boost.Propertytree,有什么方法可以使用 JSON 点符号来引用数组元素?