你好我已经创建了类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;
};
答案 0 :(得分:1)
您的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 ++中你应该避免使用原始指针和手动动态分配。首选标准库容器,动态分配动态分配对象的数组或数组。
答案 1 :(得分:1)
t[i] = new gabka();
t
是gabka
的数组,而不是gabka*
的数组。
将t
的声明更改为gabka*
的数组,或将其填充为gabka
个实例。