0

您好,我已经创建了一个类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;
};
4

2 回答 2

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++ 中您应该避免原始指针和手动动态分配。更喜欢标准库容器而不是动态分配数组或动态分配对象的数组。

于 2013-04-09T14:23:09.363 回答
1
t[i] = new gabka();

t是 的数组gabka,而不是 的数组gabka*

要么将声明更改t为 的数组,要么用实例gabka*填充它。gabka

于 2013-04-09T14:24:05.407 回答