带有超载运算符的指针阵列
Arrays of Pointers with overloaded operators
当我运行此代码时,我会遇到bad_alloc错误,我是否访问了下标操作员错误或其他?对我来说,我去适当的对象是有道理的,它将返回,然后下标操作员应该启动?顺便说一下,我想使用数组而不是向量:)
class A{
public:
A(int size)
{
array = new int[size];
}
int& operator[](const int &i)
{
return array[i]
}
private:
int * array;
};
int main() {
A ** a = new A*[10];
for(int i = 0; i < 10; i++) {
a[i] = new A(10);
for(int l = 0; l < 10; l++) {
cout << a[i][l] << endl;
}
}
}
预先感谢
您需要在调用operator[]
cout << (*(a[i]))[l] << endl;
这是需要发生的事情,一步一步:
A* pA = a[i];
A& rA = *pA;
int& val = rA[l];
cout << val;
目前发生的情况:
A* pA = a[i];
A& ra = *(pA + l); // pA is indexed as an array of As - this is wrong
cout << ra; // invalid memory
相关文章:
- EIGEN地图类:将C阵列映射到VectorXD指针以有效的方式
- 通过从当地的C风格阵列中返回指针来获取一个悬空的指针
- 将C 中的每个指针删除作为阵列的指针安全吗?
- 重新分配指针阵列的一部分的安全方法
- 排序阵列会使指针链接错误
- 指针阵列在一个对象数组中函数
- 指针阵列打印值
- C 在指针阵列中删除第一个元素,以效应后来的元素
- 问题将信息复制到指针阵列中
- 从指针打印动态int阵列中获取怪异的字符
- 将指针或一系列指针存储在动态阵列中
- 删除指向排序的字符串阵列的指针会在运行后会有一个错误
- 排序浮动指针阵列
- 快速将双重指针阵列转换为单个指针,可能是连续的
- C 按顺序排列一个指针阵列
- 如何使用struct构造函数在结构中初始化指针阵列
- 带有超载运算符的指针阵列
- 指针阵列和指针数组的指针之间的区别
- 创建类型结构的指针阵列
- 指针阵列的动态初始化