如何从主程序中设置数组的维度?
我有Class Loza,我想创建对象(设置容量和价格),并创建包含“capacity”整数的字段。但是当我想在场上设置另一个号码时
比如: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[];
};
答案 0 :(得分:3)
跟进Carl的回答,调整阵列大小是一项非常重要的任务。如果要设置数组的容量,则需要在堆上生成新空间(使用“new”),将旧数组复制到其中,然后删除旧数组。您应该使用vector<int>
代替,它会为您处理堆周围空间的移动。
答案 1 :(得分:0)
您的数组被声明为int *
的数组,而不是int
的数组。你也是错误地创建它。你真正想要的是:
int *aray;
和
aray = new int[capacity];
除此之外,您的setCapacity
方法似乎并未尝试实际更改您正在创建的阵列的容量。那迟早会咬你的。
但真正的C ++人会说“不要使用数组”。有些C ++容器可以满足您的需求。