【问题标题】:How to access dynamic array inside a class constructor?如何访问类构造函数中的动态数组?
【发布时间】:2015-05-09 23:33:45
【问题描述】:

如何访问动态数组并为其设置值?例如数组[大小] = {8, 4, 3, 2, ...}

class Array
{
public:
    Array(int sze)// default constructor
    {
        size = sze;
        ptr = new int [size];
    }

private:
    int size; // number of elements in the Array
    int *ptr = 0; // address of dynamically allocated memory

};

int main()
{
    Array arry(10);
    cout << arry.getSize();

    //.....;
}

【问题讨论】:

  • 您可以考虑使用 std::vector 或其他 stl 容器,而不是自己编写

标签: c++ arrays class private


【解决方案1】:

您创建的数组是private,要访问它,您必须提供访问器方法:

public:
    ...
    int* getPtr() { return ptr; }
...
int *ptr = arry.getPtr();
ptr[0] = 1;
cout << ptr[0];

或者,您可以隐藏指针本身并提供get(position)set(position) 方法以确保其他代码不会与您的指针混淆。

【讨论】:

  • 非常感谢。你能帮我处理 += 运算符吗?我必须创建两个数组并将数组一的值合并到数组二中。例如,如果 array1 包含 1、2、5、9、12、15,而 array2 包含 3、4、7、13、19、21、25,那么在执行语句 array1 += array2 之后,array2 将保持不变,并且 array1将包含 1、2、3、4、5、7、9、12、13、15、19、21、25
  • @SaminKhan 再问一个问题! (提示:+= 不适用于数组,您必须使用循环)。
  • @SaminKhan 如果这个答案解决了你的问题,请记得点击左侧投票数下方的复选标记接受它。
猜你喜欢
  • 2017-04-07
  • 2022-01-07
  • 1970-01-01
  • 2017-04-04
  • 2020-10-26
  • 2011-09-05
  • 1970-01-01
  • 2014-09-07
  • 2014-02-23
相关资源
最近更新 更多