数组中从"int"到"int*"的转换无效
invalid conversion from `int' to `int*' in array
如何从主程序中设置数组的维度?
我有类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[];
};
根据Carl的回答,调整数组大小是一项不平凡的任务。如果要设置阵列的容量,则需要在堆上生成新空间(使用"new"),将旧阵列复制到其中,然后删除旧阵列。您应该使用vector<int>
,它为您处理堆周围空间的移动。
您的数组被声明为int *
的数组,而不是int
的数组。您也在错误地创建它。你真正想要的是:
int *aray;
和:
aray = new int[capacity];
除此之外,setCapacity
方法似乎并没有试图实际更改正在创建的阵列的容量。这迟早会咬你的。
不过,真正的C++程序员会说"不要使用数组"。已经有一些C++容器可以做您想要做的事情了。
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度