所以我正在尝试用 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/