在类中创建数组(C ++)

时间:2015-11-20 17:00:45

标签: c++ arrays class

...编辑 我有类foo的构造函数

foo();
foo(int);
foo(const foo&);

如何使用构造函数动态分配/初始化int数组的int数 foo(int);

目的是调用foo(int)并使用main.cpp foo[int]访问数组 作为foo[1], foo[2]...

不使用vector ...

3 个答案:

答案 0 :(得分:1)

假设您在Foo类中有一个私有数据成员,它是一个指针,例如int* arr,在构造函数中,您可以动态地将它分配给某个类型的数组,如下所示:

foo::foo(int size)
{
    arr = new int[size];
}

答案 1 :(得分:-1)

#include <iostream>
#include <string>

class Foo{
    public:
    Foo(int num){
        max = num;
        arr = new int[num];
    }

    ~Foo(){
        delete [] arr;
     }

    //overloading of operator []
    int &operator[](int i){
        int re = 0;
        if(i < max)
            return arr[i];
        else
            return arr[0];
    }


    private:
        //pointer to an array
        int *arr;
        //size of an array
        int max;
};

//simple example
int main()
{
    Foo foo(10);
    foo[5] = 5;
    std::cout << foo[5] << std::endl;
}

答案 2 :(得分:-2)

struct foo_class
{
    foo_class(int i) : arr(new something[i]) {}

    something const& operator[](int i) const { return arr[i]; }

private:
    boost::scoped_array<something> arr;
};

如果你不使用boost,那么制作scoped_array模板类很容易。