【问题标题】:Accessing vector data from object passed as argument in function从函数中作为参数传递的对象访问向量数据
【发布时间】:2016-03-11 03:02:41
【问题描述】:

这是我的课:

 class Array
    {
    private:
        int size;
        vector<int> *data;
    public:
        ArrayCon();
        ~ArrayDes();
        void push_back(Array obj) const;
    };

这是我的构造函数:

Array::Array()
{
    data = new vector<int>;;
    size = 0;
}

这是 push_back(array boj) const 函数的实现

void Array::push_back(Array obj) const
{
    for (auto i = 0; i < obj.size; i++)
    {
        size++;
        data->push_back(obj.data[i]); // obj.data[i] is highlighted as wrong syntax
    }
}

我想访问作为数组参数传递的 obj 中矢量数据中的字段。请帮帮我好吗?

【问题讨论】:

  • 首先,Array 在管理其资源(分配的内存)方面必须是自主的。其次,你到底为什么还有指向std::vector的指针?
  • 干杯,我正在寻找的 Gernot。

标签: c++ visual-c++ vector


【解决方案1】:

如果我理解正确你可以按照以下方式进行

class Array
{
private:
    vector<int> data;
public:
    Array();
    ~Array();
    void push_back( const Array &obj );
};

void Array::push_back( const Array &obj )
{
    data.insert( data.end(), obj.data.begin(), obj.data.end() );
}

考虑到函数 push_back 必须在没有限定符 const 的情况下声明。

而且你不需要有数据成员size,因为向量有自己的成员函数size()

构造函数和析构函数的名称也应与类的名称相同。

无需显式定义构造函数或析构函数

尽管如此,构造函数可以定义为

Array::Array()
{
}

或者你可以写在类定义中

class Array
{
private:
    vector<int> data;
public:
    Array() = default;
    ~Array() = default;
    void push_back( const Array &obj );
};

【讨论】:

    猜你喜欢
    • 2019-10-28
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多