您好,我制作了一个类gabka
和一个函数f1
,我想将一个指针数组传递给该函数,以用gabka
对象填充该数组,但出现奇怪的错误。如何纠正?
错误:
cannot convert from gabka to int
代码 :
#include <iostream>
using namespace std;
const int n = 4;
class gabka {
public:
float woda;
gabka(){
woda = 0;
}
void f1(gabka t[n]){
for(int i = 0; i < n; i++){
t[i] = new gabka();
}
}
};
int main() {
gabka** t = new gabka*[n];
return 0;
};
最佳答案
您的f1
函数采用一个gabka
对象数组,并且您试图为每个对象分配一个gabka*
。您需要确定要传递给f1
的内容。例如,
void f1(gabka t[n]){
for(int i = 0; i < n; i++){
t[i] = gabka(); // assign default constructed gabkas
}
}
要么
void f1(gabka* t[n]){
for(int i = 0; i < n; i++){
t[i] = new gabka();
}
}
在后一种情况下,请记住,必须在
delete
的所有元素上调用t
。尚不清楚您打算对代码做什么,但是作为一般规则,在C ++中,应避免使用原始指针和手动动态分配。优先使用标准库容器而不是动态分配数组或动态分配对象的数组。