您好,我制作了一个类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 ++中,应避免使用原始指针和手动动态分配。优先使用标准库容器而不是动态分配数组或动态分配对象的数组。

09-12 03:53