0

如何从主程序设置数组的维度?

我有 Loza 类,我想创建对象(设置容量和价格),并创建包含“容量”整数的字段。但是当我想在字段中设置另一个数字时: aray[i] = 1; 编译器会说:

invalid conversion from `int' to `int*' in array

我该如何解决这个问题?我只想将字段索引上的元素设置为另一个数字(0/1)

class Loza {
public:

    Loza(int capacity, int price) {
        this->capacity = capacity;
        this->price = price;
        *aray = new int[capacity];
        for (int i = 0; i < capacity; i++) {
            aray[i] = 0;
        }
    }
    virtual ~Loza();

    void info();

    bool set(int i) {
        if (aray[i] == 0) {
            aray[i] = 1;
            return true;
        } else {
            return false;
        }
    }

    int getCapacity() const {
        return capacity;
    }

    int getPrice() const {
        return price;
    }

    void setCapacity(int pocetMiest) {
        this->capacity = pocetMiest;
    }

    void setPrice(int cenaMiesta) {
        this->price = cenaMiesta;
    }

private:
    int capacity;
    int price;
    int *aray[];
};
4

2 回答 2

3

跟进 Carl 的回答,调整数组的大小是一项不平凡的任务。如果要设置数组的容量,则需要在堆上生成新空间(使用'new'),将旧数组复制到其中,然后删除旧数组。您应该改用vector<int>它,它会为您处理堆周围空间的这种移动。

于 2013-08-11T21:37:04.767 回答
0

您的数组被声明为 的数组int *,而不是 的数组int。您也错误地创建了它。你真正想要的是:

int *aray;

和:

aray = new int[capacity];

除此之外,您的setCapacity方法似乎并未尝试实际更改您正在创建的数组的容量。那迟早会咬你的。

不过,真正的 C++ 人会说“不要使用数组”。有 C++ 容器可以满足您的需求。

于 2013-08-11T21:33:43.217 回答