按函数c ++填充指针数组

时间:2013-04-09 14:20:03

标签: c++ arrays function pointers

你好我已经创建了类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;
};

2 个答案:

答案 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();

tgabka的数组,而不是gabka*的数组。

t的声明更改为gabka*的数组,或将其填充为gabka个实例。